Étape 4: Écrire du Code pour conduire l’horloge
Le code de l’horloge peut être divisé en deux parties ; le code qui fera avancer l’horloge à un moment donné et le code qui obtient la forme actuelle de temps internet.Le code d’avance horloge a quelques considérations spéciales :
- Il faut faire avancer le temps en intervalles de 30 secondes.
- Si l’heure affichée est à l’origine, l’avance doit courir plus vite, jusqu'à ce qu’elle est enfermée.
- Si l’heure affichée est loin derrière, et il est plus rapide d’attendre juste le temps de rattraper son retard au lieu d’essayer d’obtenir l’affichage de l’horloge a rattrapé, puis l’horloge doit simplement attendre.
- Les maths horloge doit être capable de gérer le midi/minuit, où le temps s’entoure effectivement à zéro.
- L’horloge devrait garder une trace de la dernière position des mains, afin que cela ne doit pas être remis à zéro si la puissance est perdue.
- Il doit y avoir un mécanisme pour définir la position des mains, en premier lieu pour que le programme puisse bouger eux en conséquence.
La boucle principale de l’application continue vérifiant si l’heure n’est plus de 30 secondes, devançant l’heure affichée. Si c’est le cas, alors un mouvement d’avance est démarré et la nouvelle heure affichée est enregistré dans de l’Arduino EEPROM. Une avance définit initialement la goupille de bobine haute. Un deuxième morceau de code appelé à partir de la boucle principale vérifie si la période de longueur bobine d’impulsion a été atteinte et le cas échéant remettre la goupille faible. Le code ne sera pas essayer et effectuer une autre impulsion pour une période de temps. Je me suis retrouvé avec une bobine à l’heure de 150ms et un minimum de temps de 850ms, mais cela peut devoir être ajustée selon le mouvement de votre horloge.
Le code qui stocke l’heure dans l’EEPROM utilise quelques trucs pour obtenir autant de vie hors de l’Arduino du EEPROM que possible. Chaque bit de l’EEPROM a un nombre limité d’écriture cycles avant que l’opération échoue. Pour étirer ce point, j’ai utilisé un bit pour chaque intervalle de 30 secondes que l’horloge pouvait afficher (un grand total de 1440 positions possibles). Elle utilise 180 octets d’EEPROM pour stocker ce. À minuit et midi, le tableau est autorisé à tous les zéros. Puis, après la première seconde 30 intervalle le premier bit est défini. À 1 minute, un deuxième bit est défini et ainsi de suite jusqu’au jus avant minuit ou midi tous les bits dans le tableau sont définis. Par conséquent, chaque bit est écrit seulement 4 fois par jour. Cela devrait donner une durée de vie supérieure à 15 ans (très probablement beaucoup plu).
Lorsque l’horloge est sous tension, la dernière fois affichée est lue à partir de l’EEPROM.
Réglage de l’heure affichée se fait via une simple page web qui sert de l’horloge. C’était aussi utile pendant le débogage.