Étape 3: codage
Le code est assez simple : une minuterie compte en permanence vers le haut par une seconde chaque seconde (surprise, surprise). Lorsque la minuterie atteint 61 secondes, elle devient caduque et devient 1 minute et 1 seconde. Lorsque la minuterie atteint 60 minutes, il est frappé de déchéance et devient 1 heures, 0 minutes et 1 seconde. Et, de même, lorsque le compteur atteint 13, elle devient caduque une dernière fois, 1 heures, 0 minutes, 1 seconde de plus. Il s’agit d’une horloge numérique régulière !
L’Arduino vérifie également à distance chaque seconde, ce qui signifie que l’Arduino compare la distance mesurée antérieurement à la mesure de distance actuelle. Si ces deux mesures diffèrent par plus d’un montant fixe (15 cm de ce code), une alarme se déclenche (au figuré), et l’Arduino estime cette motion (Hourra!). Ce sera le déclencheur pour le reste du code.
Maintenant pour les bonnes choses. Malheureusement, si l’Arduino est débranché ou si il redémarre ou si la batterie s’épuise, il n’existe aucun moyen pour le Conseil de garder une trace d’où l’aiguille est positionnée. C’est une solution simple : chaque fois que l’Arduino démarre, vous (Oui, vous) va devoir positionner manuellement l’aiguille afin de tenir compte de l’heure. Après ce un réglage, l’Arduino seront prêt à garder une trace de l’heure exacte dans un avenir prévisible.
Maintenant pour le mouvement de la main !
L’Arduino « cartes » la position de l’aiguille par rapport à une position de 01:00. Le 01:00 correspond au numéro de l’étape 172, et le 12:00 correspond au numéro de l’étape 2060. Le reste des heures sont mappées en conséquence.
Lorsqu’un mouvement est détecté, l’Arduino vérifie la minuterie et vérifier la dernière fois, il s’installe. Si la position actuelle de l’Arduino est inférieure à la position correspondant à l’heure actuelle, il simplement soustrait les valeurs de position et déplace le moteur pas à pas ce nombre correspondant d’étapes.
Par exemple, si l’Arduino dernière déplacée à 1, c' est « position actuelle », la position de la main, serait à l’étape 172. Si elle détecte un mouvement puis à 05:00, l’heure qui correspond au numéro de l’étape 860, il serait tout simplement soustraire le nombre d’étape pour obtenir une différence de 688 étapes. Le Conseil d’administration passeraient alors 688 étapes à la position de 05:00.
Si la position actuelle de l’Arduino est supérieure à la position correspondant à l’heure actuelle, la Commission effectue un calcul différent : 2060 - position actuelle + temps-position actuelle.
Par exemple : si l’heure actuelle est 01:00 (poste 172) et la position actuelle est de 05:00 (poste 860), il irait le calcul : 2060-172 + 860 = 2748. Cela va durer une boucle complète autour de la face de l’horloge et la fin du poste de 01:00.