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 ?