Étape 4: Logiciel - portion de l’Arduino
Bien! Maintenant que vous êtes tous fait avec le matériel, passons le logiciel.L’Arduino est utilisé comme une interface dans ce projet. Il permet les servos et récepteur IR pour communiquer facilement avec l’ordinateur à l’aide de commandes simples.
Alors qu’il s’agit d’une opération « simple », il y a certains domaines critiques qui doivent être abordées. Une de ces questions que je suis tombé sur un grand nombre était synchronise communication. Essentiellement au moment où que le microprocesseur a été prêt à lire la commande, l’ordinateur n’a pas terminé l’envoyer. Une solution simple pour cela est d’attribuer un caractère « commande prête ». J’ai choisi un point-virgule comme mon terminator.
Pour s’assurer que les commandes sont dans un aspect de série qui s’arrête l’ordinateur essayant de lire une température tandis que le capteur IR était en mouvement, j’ai besoin d’une méthode de réponse. Une solution que, commun pour les communications, est appelé ACK ou accusé de réception. Disons que nous exécutons « p120; » (panoramique à 120deg), nous voulons que l’ordinateur à attendre pour le microprocesseur à dire « AP120; » (ack pan 120). Une fois l’accusé de réception reçu le programme peut continuer à aller chercher une température ou la prochaine série de commandes.
Une autre partie compliquée lit les données IR du port série sur le capteur. Afin de pouvoir lire les données, nous devons faire ce qu’on appelle "bit-bang". Cela consiste à mettre en place une interruption sur le front descendant de l’horloge pour lire les bits sur la ligne de données. Chaque « burst » de données qui vient en contient un en-tête et des données qui doit être décodé.
Lire le fichier pdf pour le module ZyTemp (http://www.metrisinst.com/item_management/assets/files/TN9_UserManual_009.pdf ) à la page 13 vous pouvez voir la séquence de données pour chacun des éclats de données. Au lieu de passer du temps là-dessus, j’ai décidé de faire une recherche rapide et trouvé que quelqu'un d’autre a déjà écrit ceci pour l’arduino (ils ont fait un contrôleur de température précise plaque chauffante). La source est documentée dans le code de référence et crédit pour les idées.
Tous dans tout le code de l’Arduino, lorsqu’il est compilé, prend 7982 octets d’espace.
Commandes à connaître (toutes les commandes doivent se terminer par un «; » :
p < n > ; #pan à < n > deg
t < n > ; #tilt à < n > deg
r ; objet de capteur #read le IR
un ; temp ambiant de capteur #read le IR
Utilisez-les pour régler les zones de protection (ne permet pas une commande pan/tilt travailler si out of bounds - certains servos vont mâcher les selfs vers le haut s’ils essaient de dépasser un max)
u < n > ; #set servo haute limite (protection) valeur par défaut est 145 deg
l < n > ; # configuration inférieure servo limite (protection) par défaut est 35 deg