MTbutton: Exemple 1
Le programme va allumer la led LED_BUILTIN quand on appuie sur un bouton branché entre A0 et GND.
Le bouton
Pour la fonction j'appuie ça s'allume, je relêche ça s'éteint correspond à l'objet MTbutton de base. C'est donc lui que nous allons utiliser.
On va commencer par donner des noms symboliques à la broche utilisée par le bouton:
const uint8_t PIN_BUTTON = A0; // Bouton câblé entre GND et A0
Définissons notre bouton:
MTbutton Bouton(PIN_BUTTON, allume, eteint);
Cela définit un bouton nommé "Bouton". Il est du type MTbutton car c'est un poussoir simple. Il y a trois paramètres à passer:
- le nom de la broche
- le nom de la fonction qui va être appelée si on appuie sur le bouton
- le nom de la fonction qui va être appelée si on relâche le bouton
Les fonctions appelées ne doivent pas avoir de paramètres et ne doivent rien retourner.
MTbutton admet un dernier paramètre qui doit donner l'état de repos. Il est plus simple de brancher le bouton entre A et GND (pas besoin de résistance) et c'est cet état qui est pris par défaut, on n'a donc pas besoin de rajouter ce paramètre. On pourrait aussi ne pas préciser la deuxième fonction si ce n'était pas le bouton qui éteignait la led.
Notez que dans la définition de "Bouton" on parle de "allume" et "eteint" qui doivent être définies auparavant. Il va donc falloir les définir avant cette ligne. Voici leur définition:
void allume(void) { digitalWrite(LED_BUILTIN, HIGH); } void eteint(void) { digitalWrite(LED_BUILTIN, LOW); }
Pas plus de commentaires avec des noms explicites. Notez que l'on peut définir ces deux fonctions dans l'ordre qui nous convient, mais il faut les mettre avant la définition du bouton.
Il faut comme dans tous les programmes qui utilisent MTobjets, inclure la bibliothèque utile. Ici on utilise comme seul objet un bouton poussoir (le nom de l'objet est MTbutton):
#include "MTbutton.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() et loop()
On a tout fait pour le bouton, mais il faut aussi s'occuper de la led. Le nom symbolique est déjà défini par Arduino: LED_BUILTIN. Dans le setup(), il faut la définir en sortie:
void setup() { pinMode(LED_BUILTIN, OUTPUT); }
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 bouton.
Programme complet
Voici donc le programme complet:
// Ce programme allume une led si on appuie sur un bouton. #include "MTbutton.h" // V1.0.0 Voir http://arduino.dansetrad.fr/MTobjects const uint8_t PIN_BUTTON = A0; // Bouton câblé entre GND et A0 void allume(void) { digitalWrite(LED_BUILTIN, HIGH); } void eteint(void) { digitalWrite(LED_BUILTIN, LOW); } MTbutton Bouton(PIN_BUTTON, allume, eteint); void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop(){}