Il faut absolument brancher la résistance à la broche 9 puis la LED (grande patte: anode(+)) coté résistance
Il existe plusieurs méthodes pour câbler un bouton poussoir (voir sur internet).
Je vous présente ici le câblage qui permet de minimiser le nombre de résistances (utilisation de la résistance interne de la carte). Comme vous pouvez le constater cette résistance est présente entre le 5V et l'entrée digitale 2 (non visible en réalité). On parle de résistance de PULL-UP (niveau haut).
Ce type de configuration va induire des modifications dans le programme pour que le microcontrôleur comprenne que l'on utilise la résistance interne.
De plus, lors de l'appui sur le bouton poussoir, des rebonds apparaissent (on ne passe pas de l'état bas à l'état haut instantanément ou inversement). Pour palier à ce problème, on peut utiliser:
Permet d'indiquer que l'on utilise la résistance interne de la carte. Dans pinMode, il suffit de remplacer INPUT par INPUT_PULLUP.
Il s'agit ici d'une interruption matérielle. Comme son nom l'indique, on va interrompre le programme afin de prendre en compte une information externe (ici l'appui sur le bouton poussoir) puis le programme reprendra normalement. Attention, sur une carte Arduino UNO, seules les broches digitales 2 et 3 sont pourvues de cette fonction.
Analyse des éléments de la parenthèses:
rq: le terme 0 peut être remplacé par digitalPinInterrupt(bouton) pour notre cas; bouton étant la broche 2.
Cette fonction inverser() (void inverser()) permet d'inverser l'état de la variable etatBouton par le symbole !. Exemple: si etatBouton est LOW, !etatBouton est HIGH et inversement.
Remarque importante: la variable etatBouton change au cours du temps (passage de l'état LOW à HIGH et inversement). Il est donc indispensable d'affecter à ce type de variable, un type de donnée volatile (voir avant void setup()).
Attention: la fonction attachInterrupt() n'est pas parfaite. En effet, le phénomène de rebond peut conduire à des erreurs . Par exemple si vous souhaitez incrémenter un compteur.