MTclock: Exemple 1
Gestion par événements pour UNO, Nano, Mega

5 lettres avec
5 métronomes

Ce programme va envoyer régulièrement toutes les secondes une lettre sur la console. Il y a 5 letrres à envoyer de A à E.

Principe: Un monostable A attend 1s puis envoie la lettre A et déclenche le deuxième monostable B. Ce dernier attend 1s, envoie la lettre B et ainsi de suite. Il y a 5 lettres à envoyer, on va utiliser 5 monostables. C'est plus à but pédagogique pour montrer que si MTobject possède une horloge simple et une double, on peut facilement faire des triples, quadruples, quintuples comme ici... Si on devait faire le meilleur programme répondant à cet énoncé, j'utiliserai un métronome et un compteur modulo 5 qui indiquerait la lettre à envoyer.

Programme complet recommandé

Ce programme se fait complètement sous interruption, et libère loop qui peut être utilisé pour faire autre chose.

// Ce programme envoie 5 lettres en boucle sur la voie série

#include <MTobjects.h> // V1.0.4 Voir http://arduino.dansetrad.fr/MTobjects

void envoiE(void); // Prédéfinition car elle contient référence à monostableA
MTclock MonostableE(1000 milli_secondes, envoiE, 1 action_et_arret, MT_OFF);

void envoiD(void) { Serial.print('D'); MonostableE.start(); }
MTclock MonostableD(1000 milli_secondes, envoiD, 1 action_et_arret, MT_OFF);

void envoiC(void) { Serial.print('C'); MonostableD.start(); }
MTclock MonostableC(1000 milli_secondes, envoiC, 1 action_et_arret, MT_OFF);

void envoiB(void) { Serial.print('B'); MonostableC.start(); }
MTclock MonostableB(1000 milli_secondes, envoiB, 1 action_et_arret, MT_OFF);

void envoiA(void) { Serial.print('A'); MonostableB.start(); }
MTclock MonostableA(1000 milli_secondes, envoiA, 1 action_et_arret, MT_ON);

void envoiE(void) { Serial.println('E'); MonostableA.start(); }


void setup()
{
  Serial.begin(115200);
}

void loop(){}