Étape 3: programmation
C’est là que ça devient amusant.La bibliothèque UTFT avéré pour être assez facile à utiliser et j’ai aussi trouvé un facile à utiliser la bibliothèque pour la DHT-22. Même avec ces belles bibliothèques, il y a quelques difficultés.
L’Arduino i2c esclave semble se comporter seulement si vous limitez l’utilisation d’opérations codées sur un octet, et cela complique envoi flexible des structures complexes. Je veux être en mesure d’envoyer des commandes de dessin écran de la BeagleBone à l’Arduino. Mes options devaient coder un système où un octet est envoyé comme un « type de commande » puis créer une branche pour lire plus d’octets pour compléter la structure ou travailler sur un moyen d’encapsuler la chaîne délimitée et traitez-la. Méthode 1 voudrait dire je ne peux pas avoir de paramètres optionnels, et si l’envoi d’octets est désynchronisée, il sera difficile de re-synchronisation. Alors j’ai utilisé la méthode 2 en utilisant certaines variables de tampon et l’envoi d’un octet 0 comme une marque de fin null, comme C utilisations pour les chaînes. Même si un octet est tombé, le 0 octet se terminera la structure à un certain point et puis c’est juste une question de traiter les données bizarres quand je parse.
Le prochain défi était que le DHT22 est lent. aime, vraiment vraiment lent. Résolu qu’à l’aide d’une « valeur actuelle » variable et un délai. Je n’ai besoin de réponse super rapide lorsque les valeurs changent, mais je tiens à réagir rapidement quand je demande pour les valeurs. La boucle principale interroge une fonction à chaque fois, qui fonctionnent alors vérifie quand la valeur a été mise à jour et met à jour si elle a été plus de 3 secondes. Je vais probablement finir par cette conversion à un temporisateur de quelque sorte.
J’ai aussi programmé en mode « dev » donc je peux déconnecter l’écran LCD et obtenir des informations sur la série. Il a été utile jusqu'à présent, mais maintenant que sont élaborées les bases j’ai probablement ne sera pas utiliser à nouveau.
Sur le Beaglebone, j’utilise PyBBIO dès maintenant. Ce sont les arduino comme commandes et méthodes me garder de confondre super lorsqu’il s’agit avec ces différents langages comme C et Python est. Il est assez facile à installer, et a quelques classes nice construire dans. C’est mon intention pour essayer d’obtenir une sorte de classe i2c dedans, si Haim n’est pas tout d’abord !
Vous trouverez un fichier zip joint avec mon code, un fichier ino pour l’arduino et un fichier python pour le beaglebone. Il y a actuellement seul soutien pour les lectures de température et d’humidité de DHT22. Il met à jour l’affichage sur l’arduino, même si le script python n’est pas en cours d’exécution. Le script python simplement obtient les valeurs et les imprime sur la borne. Comme je le disais au début, j’ai encore beaucoup de travail à faire !
Le croquis compilé utilise 29,5 K du K 32,2 maximale, et j’ai encore besoin d’ajouter le support tactile et les fonctions de dessin ! Je pense qu’il y a beaucoup de code dans l’utft que je peux couper dehors, et peut-être que je peux tirer les trucs de bibliothèque par SRD dans et rendent ainsi plus maigre. Ou, peut-être, je vais juste assez, nous allons voir !