Main

Apprendre : Accueil | Exemples | Fondements? | Bidouillage? | Liens?
Exemples > Pour commencer

Lire l'état d'un bouton poussoir sur le port Série


Cet exemple vous montre comment visualiser l'état d'un bouton poussoir (ou BP) en établissant une communication série entre la carte Arduino et votre ordinateur, via la connexion USB.

Matériel requis

  • une plaque d'essai
  • des straps
  • un bouton poussoir
  • une résistance de 10 Kohms

Le circuit à réaliser

Image créée avec le logiciel Fritzing. Pour plus de circuits d'exemple, voir la page des projets Fritzing.

Pour réaliser ce circuit :

  • Mettre le bouton poussoir en place sur la plaque d'essai,
  • Connecter 3 fils à la carte Arduino :
    • les 2 premiers, rouge et noir, à connecter au bus d'alimentation (bandes rouge et bleue en haut et bas de la carte) pour alimenter la plaque d'essai en 5V et la connecter à la masse.
    • Le 3ème fil relie la broche 2 à une des pattes du bouton poussoir.
  • La même patte du bouton poussoir doit-etre connectée à la masse via la résistante de 10Ko réalisant ainsi un "rappel au moins" (ou pulldown en anglais).
  • La patte opposée du bouton poussoir doit être connectée au 5V.

Les boutons poussoir connectent deux points d'un circuit quand vous appuyez dessus (et seulement tant que vous appuyez dessus). Quand le bouton poussoir (ou BP) est ouvert (càd quand il n'est pas appuyé), il n'y a aucune connexion entre les broches du boutton (ou les 2 paires de broches sur les BP pour CI à 4 broches) : dans cette situation la broche de la carte Arduino est donc connectée à la masse (via la résistance de "rappel au moins" ou pulldown et la broche sera lue comme étant au niveau BAS (0V).

Quand le BP est fermé (càd lorsqu'on appuie dessus), il se crée une connexion entre les 2 broches du BP, reliant ainsi la broche au 5V, et la broche sera lue comme étant au niveau HAUT (=+5V).

Lorsqu'une broche numérique d'Entrée/Sortie est connectée à rien, le niveau présent sur cette broche en entrée est instable et la LED dans notre programme clignoterait de façon erratique. Ceci est du au fait que l'entrée est "flottante" - c'est à dire qu'elle n'a pas de connexion matérielle au +5V ou à la masse, et elle oscillera de façon aléatoire entre le niveau HAUT et le niveau BAS. C'est pour cette raison qu'il faut mettre une résistance de "rappel au moins" dans le montage du BP sur la broche numérique en entrée.

Pour plus d'information sur le bouton poussoir, voir : Le Bouton Poussoir

Bon à savoir
Il est possible de réaliser également un montage d'un bouton poussoir sur une broche en entrée avec un "rappel au plus" ou pull-up, au lieu d'un "rappel au moins" ou "pull-down". Le microcontrôleur utilisé sur la carte Arduino dispose d'ailleurs d'une résistance interne qu'il est possible d'activer pour réaliser ce "rappel au plus", ce qui permet de se dispenser d'une résistance externe ! Voir l'exemple : l'appui sur un BP allume une LED

Mise en oeuvre du programme

Programmation de la carte Arduino

Préparation du Terminal côté PC dans le logiciel Arduino

  • Côté PC, il faut ouvrir la fenêtre terminal de l'IDE Arduino : pour ce faire, un simple clic sur le bouton « Sérial Monitor ».
  • La fenêtre « Terminal » s'ouvre alors :
  • Il faut alors régler le débit de communication sur la même valeur que celle utilisée par le programme avec lequel nous allons programmer la carte Arduino :

Résultat obtenu

L'appui sur le bouton poussoir affiche un message dans la fenêtre Terminal Série sur l'ordinateur.

Schéma théorique du montage

Voici le schéma théorique du montage :

Explications du programme

Au niveau de la fonction setup ()

Dans le programme ci-dessous, la toute première chose que l'on fait est d'initialiser la communication série entre votre ordinateur et la carte Arduino, à 9600 bits de données par seconde à l'aide de l'instruction Serial.begin :

Serial.begin(9600);

Ensuite, on initialise la broche numérique 2 pour fonctionner en tant qu'ENTREE : c'est la broche sur laquelle sera connecté le bouton poussoir. On utilise l'instruction digitalRead :

pinMode(2,INPUT);

Au niveau de la fonction loop()

Maintenant que la fonction setup() est complète, complétons la fonction loop() de votre code. Quand le bouton poussoir est appuyé, le 5V pourra parcourir librement le circuit et quand le bouton poussoir n'est pas appuyé, la broche en entrée sera connectée à la masse (0V) via la résistance de 10 Kohms.

Cette entrée est une entrée numérique : cela signifie qu'elle ne pourra prendre que soit être dans un état HAUT (lu par Arduino comme un "1") ou dans un état BAS (lu par Arduino comme un 0), et il n'existe aucun autre état intermédiaire.

La première chose à faire dans la fonction loop de votre programme est de créer une variable pour stocker l'information sur l'état du bouton poussoir. La valeur en provenance du bouton poussoir ne pouvant être que 1 ou 0, on peut utiliser par exemple une variable de type int. On va appeler cette variable sensorValue, et on va la charger avec l'état de la broche 2. On réalise cela à l'aide de l'instruction digitalRead :

int sensorValue = digitalRead(2);

Une fois que Arduino a lu l'entrée, il va être possible d'afficher l'information sur l'ordinateur en tant que valeur décimale. Ceci est réalisé à l'aide de la commande Serial.println dans la dernière ligne du code

Serial.println(sensorValue, DEC);

A présent, une fois la carte Arduino programmée, quand vous ouvrirez la fenêtre du Terminal Série de logiciel Arduino, vous verrez une série de "0" si le BP n'est pas appuyé et de "1" si il est appuyé.

Le code du programme

A copier/coller dans votre logiciel Arduino.


/*

Lit l'état du bouton poussoir sur la broche 2
et affiche le résultat dans le Terminal Série sur l'ordinateur

 Cet exemple de code dest dans le domaine public
 Traduction française par X.HINAULT - www.mon-club-elec.fr

 */


void setup() {
  Serial.begin(9600); // initialise la communication série
  // vérifier que le débit utiliser est le même dans le Terminal Série

  pinMode(2, INPUT); // met la broche 2 en sortie
}

void loop() {
  int sensorValue = digitalRead(2); // lit l'état de la broche 2 et met le résultat dans la variable
  Serial.println(sensorValue, DEC); // affiche la variable dans le Terminal Serie
}
 

Voir également

La documentation des composants utilisés

La documentation des instructions utilisées :

La documentation des stratégies de programmation utilisées

Les autres exemples suivants :

  • Le programme minimum : Le code minimum nécessaire pour un programme Arduino.
  • Faire clignoter une LED: Allumer puis éteindre successivement une LED. (Broche numérique en mode SORTIE)
  • Lire l'état d'un bouton poussoir : Lire l'état d'un bouton poussoir et afficher le résultat obtenu dans la fenêtre Terminal Série du logiciel Arduino. (Broche numérique en mode ENTREE)
  • Mesure Analogique visualisée sur port Série : Lire la tension aux bornes d'un potentiomètre et afficher la valeur obtenue dans la fenêtre Terminal Série du logiciel Arduino. (Broche en entrée ANALOGIQUE)
  • Variation lumineuse: Montre comment utiliser la "sortie analogique" (impulsion PWM) pour faire varier l'intensité lumineuse d'une LED

Commentaires utilisateurs

  • A titre expérimental, on peut visualiser la variation erratique du niveau de la broche non connectée en enlevant la résistance de "rappel au moins" (ou pulldown).

Page d'accueil de la référence Arduino en français

Corrections, suggestions et nouvelle documentation peuvent être postées sur le Forum Arduino.

La présente traduction française commentée a été réalisée par Xavier HINAULT (2010) (www.mon-club-elec.fr) et est sous licence Creative Commons Attribution-ShareAlike 3.0. Cette page est la traduction française commentée de la page originale : http://arduino.cc/en/Tutorial/DigitalReadSerial