Main

Apprendre : Accueil | Exemples | Fondements? | Bidouillage? | Liens?
Exemples > Entrées / Sorties Numériques

L'appui sur un bouton poussoir (BP) allume une LED.


Un Bouton Poussoir connecte deux point d'un circuit entre eux lorsqu'il est appuyé. Cet exemple allume la LED intégrée de la carte Arduino (sur la broche 13) quand on presse un bouton poussoir.

Matériel requis

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

Le circuit à réaliser

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

Connecter 3 fils à la carte Arduino :

  • les 2 premiers, rouge et noir, pour connecter le bus d'alimentation de la plaque d'essai (connecteur en long au bas et au haut de la plaque d'essai)
  • le 3ème de la broche 2 à l'une des broches du bouton poussoir.

Connecter le bouton pousspir :

Comment çà marche ?

Lorsque le bouton poussoir est ouvert (non appuyé), il n'y a pas de connexion entre les broches opposées du bouton poussoir, et donc la broche de la carte Arduino est connectée à la masse (au 0V) au travers de la résistance de "rappel-au-moins" (pulldown) et la broche sera lue à l'état BAS. Lorsque le bouton est fermé (appuyé), cela crée une connexion entre les broches opposées du bouton poussoir, et la broche de la carte Arduino est connectée au 5 volts, et elle sera lue à l'état HAUT.

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.

Il est également possible de créer le circuit équivalent de façon inversée, avec une résistance de "rappel-au-plus" qui maintiendra la broche au niveau HAUT si le bouton poussoir est ouvert. La broche sera lue au niveau BAS lorsque le BP sera appuyé. Si vous faites cela, le programme qui suit sera inversé, avec la LED allumée en l'absence d'appui et éteinte quand vous appuyerez le bouton poussoir.

Bon à savoir
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

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

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

Lorsque l'on appuie sur le BP, la LED s'allume. Elle s'éteint lorsque le BP est relâché.

Schéma théorique du montage

Voici le schéma théorique du montage :

Le code du programme

A copier/coller dans votre logiciel Arduino.

/*
 Commander une LED avec un bouton poussoir

 Allume une LED connectée sur la broche 13 en sortie
 lorsque l'on appuie sur un bouton poussoir connecté
 sur une broche en entrée.


 Le montage :
 * LED connectée entre la broche 13 et la masse
 * Bouton poussoir entre la broche 2 et le 0V
 * Une résistance de 10Ko connectée entre la broche 2 et 0V

 créé en 2005
 par DojoDave <http://www.0j0.org>
 modifié 17 Juin 2009
 par Tom Igoe

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

 http://www.arduino.cc/en/Tutorial/Button
 */


// Les constantes ne changent pas durant le programme.
// Utilisée ici pour définir le numéro de la broche :

const int buttonPin = 2;     // crée un identifiant pour la broche utilisée avec le BP
const int ledPin =  13;      // crée un identifiant pour la broche utilisée avec la LED

// Les variables sont modifiées au cours du programme
int buttonState = 0;         // variable pour mémoriser l'état du bouton

void setup() {
  // configure la broche numérique en SORTIE
  pinMode(ledPin, OUTPUT);      
  // configure la broche numérique en SORTIE
  pinMode(buttonPin, INPUT);    
}

void loop(){
  // lit la valeur de l'état du bouton et la mémorise dans la variable
  buttonState = digitalRead(buttonPin);

  // Teste si le bouton est appuyé
  // c'est à dire si la variable buttonState est à 1
  // NB : ne pas confondre = et == !
  if (buttonState == HIGH) {    
    // allume la LED  
    digitalWrite(ledPin, HIGH);  
  }
  else { // sinon
    // éteint la LED
    digitalWrite(ledPin, LOW);
  }
}

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 :

  1. Debounce - read a pushbutton filtering noise
  2. Button State Change - counting the number of button pushes

Commentaires utilisateurs


>><<


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/Button