MTclockDouble: Exemple 5
Gestion par événements pour UNO, Nano, Mega
Slaves avec M/A
On veut réaliser une led clignotante avec des flashs pilotés par un bouton marche/arrêt. Quand elle clignote, le chronogramme ressemble à:

Pour faire les flashs, on va utiliser une première horloge qui va en délivrer 5 flashs puis qui va s'arrêter. Pour faire le clignotement global, une deuxième horloge va déclencher la première toutes les deux secondes. Enfin, pour gérer le marche/arrêt, un bouton va activer ou non la deuxième horloge.
Programme complet recommandé
Ce programme se fait complètement sous interruption, et libère loop qui peut être utilisé pour faire autre chose.
// Clignotement d'une led qui flash avec un marche/arrêt #include <MTobjects.h> // V1.0.4 Voir http://arduino.dansetrad.fr/MTobjects const uint8_t PIN_BUTTON = A0; // Bouton câblé entre GND et A0 // CinqFlash est la partie qui fait flasher la led void allume(void) { digitalWrite(LED_BUILTIN, HIGH); } void eteint(void) { digitalWrite(LED_BUILTIN, LOW); } MTdoubleClock CinqFlash(100 milli_secondes, 50 milli_secondes, allume, eteint, 10 actions_et_arret, MT_OFF); // Metronome est responsable du clignotement général void flash(void) { CinqFlash.start(); } MTclock Metronome(2000 milli_secondes, flash, MT_INFINI, MT_OFF); //Bouton permet la marche ou l'arrêt général void marche(void) { CinqFlash.start(); // Pour flasher dès la mise en marche Metronome.start(); } void arret(void) { Metronome.stop(); } MTcheckButton Bouton(PIN_BUTTON, marche, arret); void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop(){}