Les boutons poussoirs

L’objectif est de capter un appui sur un bouton poussoir.

Figure – Conventions du transistor bipolaire

Cela permettra par exemple d’allumer une LED lors d’un appui sur celui-ci.

Principe

D’un point de vue électrique, un bouton poussoir est un fil sectionné (circuit ouvert) quand il est au repos (bouton non pressé) et se transforme en fil lorsqu’il est pressé.
Le bouton poussoir possède 4 broches et le courant traverse le bouton par les broches diagonalement opposées.

Ah, bah très bien, on met une broche à 5V et une autre vers une broche numérique et le tour est joué ??

Ok, faisons cela.

– Je pense qu’il va y avoir un problème…. Que vaut la tension quand le bouton poussoir est au repos ??

– HEu….

– C’est bien là le problème…Vu que le bouton se comporte comme un fil sectionné au repos, le potentiel (tenson) sur l’entrée est indeterminé.
Du coup, l’arduino va aussi bien lire un niveau logique 0 ou 5V !!

Pour remédier à ce problème, nous allons fixer le potentiel de l’entrée à un niveau donné.

Il s’agit des montages pull-up ou pull-down

Montage pull-up

Étudions le cas du montage pull-up :

Cette fois-ci, on constate que lorsque le bouton poussoir est au repos, l’entrée de l’Arduino est directement reliée au 5V par l’intermédiaire d’une résistance.

Un entrée sur le 5V fixe le niveau logique à 5V. Objectif atteint !

Ne pourrions nous pas mettre un fil à la place de la résistance ??

-> On pourrait mettre un fils dans le cas où… nous n’appuyons jamais sur le bouton poussoir !

Comment ça ?

Et bien, imaginez que vous appuyez sur le bouton poussoir… Que se passe-t-il ?

Le courant à tendance à passer des potentiels les plus élevés (5V ici) aux potentiels les plus faibles (la masse).

Le courant passe donc dans un premier fil (notre résistance ‘nulle’) et par un second fil (notre bouton poussoir) : nous obtenons donc un joli court-circuit !

La valeur de la résistance importe peu tant qu’elle soit suffisamment élevée (>10 kOmh).

Ce montage est appelé pull-up car le potentiel est au niveau logique haut quand le bouton est au repos.

Montage pull-down

Le montage pull-down est le contraire en terme de placement de résistance et de bouton poussoir.

Au repos, le bouton poussoir délivre un niveau logique 0.

Dorénavant, nous utiliserons au choix le montage pull-up ou pull-down pour les boutons poussoirs.
Maintenant, passons au programme…

Programme bouton boussoir

digitalRead(broche) est une instruction permettant de lire le niveau logique d’une entrée de l’Arduino.
On lui précise le numéro de la broche et elle retourne le niveau logique de la broche.

//VARIABLES
 int broche_bp = 3; //Broche du bouton

void setup()
 {
 pinMode(broche_bp, INPUT);//Bouton en entrée
 Serial.begin(9600); //Communication avec le moniteur série

}
 void loop()
 {
 int valeur = digitalRead(broche_bp); //On stocke la valeur lue dans une variable
 Serial.print("Valeur du bouton = ") ; //Affichage de texte
 Serial.println(valeur); //Affichage de valeur
 delay(100);

}

Pour une lecture avec une carte ESP12 NodeMCU, on utilisera les broches appelée DX avec X le numéro inscrit sur la carte (D1, D2…). Il faudra avoir installé les bibliothèques ESP82 dans l’Editeur Arduino

//VARIABLES
 int broche_bp = D1; //Broche du bouton

void setup()
 {
 pinMode(broche_bp, INPUT);//Bouton en entrée
 Serial.begin(9600); //Communication avec le moniteur série

}
 void loop()
 {
 int valeur = digitalRead(broche_bp); //On stocke la valeur lue dans une variable
 Serial.print("Valeur du bouton = ") ; //Affichage de texte
 Serial.println(valeur); //Affichage de valeur
 delay(100);

}

La valeur de la variable valeur lors d’un appui sur le bouton poussoir dépend du type de montage sélectionné (pull-up ou pull-down). Un montage pull-up va imposer la variable valeur à 0 quand le boton est pressé, 1 pour le pull-down.