Mettre en veille pendant x heures une carte arduino uno

quand l'interruption par appui du bouton arrive (comme on a dit qu'on acceptait les interruption avec le attachInterrupt()), ça sort l'arduino de son sommeil, le processeur se remet en route et ça appelle la fonction reveil() (puisque c'est ce qu'on a passé en paramètre comme ISR).

Une fois cette fonction exécutée dans le cadre de l'interruption, comme l'arduino est réveillé il continue là où il en était précédemment, c'est à dire après l'instruction qui l'avait mis en sommeil

LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);

Vous avez besoin de savoir à ce point

  • si vous avez été réveillé parce que les 8 secondes ont été atteintes, auquel cas vous voulez vous rendormir immédiatement sauf si les x heures sont atteintes et la boucle for est terminée,
  • ou si vous avez été réveillé par le bouton. Auquel cas vous voulez sortir de la boucle for même s'il reste du temps de sommeil.

la variable mise à vrai dans l'interruption va donc nous servir à décider ce qui nous a réveillé. Si elle est à vrai, c'est qu'on est passé dans l'interruption du bouton et donc il faut faire un break pour sortir de la boucle for() sans attendre

c'est plus clair ?

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.