MTdoubleClock: Exemple 1
Ce programme va faire clignoter LED_BUILTIN
On va utiliser un métronome double, un événement sur deux va l'allumer, un événement sur deux va l'éteindre. C'est un exemple classique qui peut servir de base à des tâches comme programmer un ventilateur, un moteur...
Le métronome
Voici comment on peut définir une fonction qui allume la led et une fonction qui l'éteint:
void allume(void) { digitalWrite(LED_BUILTIN, HIGH); } void eteint(void) { digitalWrite(LED_BUILTIN, LOW); }
Notre métronome va donc appeler alternativement chacune des deux fonctions. Si l'on veut un cycle allumé pendant 0,1s et éteint pendant 0,5s il faut bien prendre un MTdoubleClock qui permet de différentier les deux temps différents:
MTdoubleClock Metronome( ...
Cela va créer un objet (en gros une variable) de type MTdoubleClock.
Au début la led est éteinte. Il faut donc une première action (un appel à la fonction allume) au bout de 0,5s:
MTdoubleClock Metronome(500 milli_secondes, ... , allume, ...
Les temps étant exprimés obligatoirement en millisecondes, on a donc le nombre 500. Le milli_secondes est un mot commentaire ignoré par le compilateur. On reconnaît ces mots à la présence d'un caractère "_" au milieu de plein de lettres minuscules sans avoir ce caractère en début.
Et pour la deuxième action, ce sera au bout de 100ms. La définition complète de notre métronome est donc:
MTdoubleClock Metronome(500 milli_secondes, 100 milli_secondes, allume, eteint);
Il faut comme dans tous les programmes qui utilisent MTobjets, inclure la bibliothèque utile. Ici on utilise comme seul objet un double métronome (le nom de l'objet est MTdoubleClock):
#include "MTdoubleClock.h" // V1.0.0 Voir http://arduino.dansetrad.fr/MTobjects
Je conseille fortement de laisser le commentaire, si une autre personne voulait essayer le programme, elle aurait directement un lien de téléchargement. C'est valable pour toutes les bibliothèques que vous utilisez.
setup()
Comme on utilise une broche pour commander une led, il faut la déclarer en sortie:
void setup() { pinMode(LED_BUILTIN, OUTPUT); }
loop()
Il n'y a rien à faire de plus, loop() ne nous sert à rien. Il va rester vide. Mais vous pouvez y mettre un autre programme, celui que nous avons fait est indépendant. Donc:
void loop(){}
J'ai tout mis sur la même ligne mais vous pouvez en prendre deux ou trois. Même si la fonction est vide et ne nous sert à rien apparemment, il faut la définir. En fait, elle va servir de boucle d'attente quand notre programme ne va pas s'intéresser au métronome.
Programme complet
Voici donc le programme complet:
// Ce programme fait clignoter une led #include "MTdoubleClock.h" // V1.0.0 Voir http://arduino.dansetrad.fr/MTobjects void allume(void) { digitalWrite(LED_BUILTIN, HIGH); } void eteint(void) { digitalWrite(LED_BUILTIN, LOW); } MTdoubleClock Metronome(500 milli_secondes, 100 milli_secondes, allume, eteint); void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop(){}