MTclockDouble: Exemple 5
Gestion par événements pour UNO, Nano, Mega
Salves 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.6 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(){}