J'essaie de faire une petite porte qui s'ouvre et se ferme qui devrait s'ouvrir ou se fermer toutes les 12 heures. Je me demandais si je pouvais juste faire un petit script en boucle avec un delay () pendant 12 heures, delay (43 200 000 000); J'imagine? Cependant, je n'ai aucune idée si c'est possible et / ou recommandable. Certains commentaires / alternatives (si nécessaire) seraient bien :)
arduino-uno
timers
Fred Pannekoek
la source
la source
Réponses:
La méthode d'horloge en temps réel est le moyen le plus précis, mais sinon, utilisez
millis
Cela retardera jusqu'à env. 4294967295ms (2 ^ 32-1) ou 49 jours, après quoi la minuterie rattrapera la valeur de
startMillis
la source
delay(LONG_DELAY_MS)
? L' implémentation Arduino accepte les longs non signés. Je ne suis pas non plus tout à fait sûr que votre code fonctionne correctement lorsqu'il semillis()
termine et est plus petit questartMillis
delay()
a ses utilisations, mais pour de longs retards ce n'est pas bon. Il indique simplement au microcontrôleur de ne rien faire pour lesx
cycles d'horloge. Pendant ce temps, votre Arduino ne peut rien faire d'autre.Votre meilleur pari serait d'utiliser une chose appelée horloge en temps réel (RTC). Ces puces sont spécialement conçues pour garder une trace du temps, et vous pouvez les connecter à votre Arduino en toute simplicité. Voici un exemple de la façon dont vous pouvez le faire.
la source
Vous pouvez utiliser l'interruption du chien de garde et faire dormir votre MCU en attendant et économiser de l'énergie.
Mais notez que vous n'économiserez de l'énergie que si votre carte le sauvegarde également. Cela signifie que vous devez avoir un régulateur de tension de repos faible au lieu des régulateurs habituels qui équipent les cartes Arduino les plus courantes, telles que l'Uno. Sinon, peu importe si votre MCU économise de l'énergie si votre carte ne le fait pas.
Voici le code (non testé):
Le code que j'ai copié provient de cette page: Arduino basse consommation utilisant la minuterie de surveillance .
la source
Avez-vous un sommeil (int secondes non signé) disponible?
Sinon, cela vous permettrait de retarder () très longtemps:
la source
Cela fonctionnera:
la source
J'utilise juste des boucles quand je ne veux pas faire de trucs entre les deux:
la source
delay(43200000)
.