Branchement bouton-poussoir Arduino

Comment connecter le bouton-poussoir aux entrées numériques et analogiques de l’Arduino Uno. Nous vous dirons comment éviter le « rebondissement du contact » en utilisant la configuration de la broche INPUT_PULLUP et envisagerons le schéma de connexion d’un ou plusieurs boutons-poussoirs à la carte Arduino. Nous allons considérer les fonctions digitalRead et analogRead dans le langage de programmation C++ Arduino.


Pour cette activité, nous aurons besoin:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • boutons-poussoirs
  • LEDs et résistance
  • breadboard
  • fils de connexion

Matériel supplémentaire sur ce sujet:

  1. Arduino allumer et éteindre LED avec bouton
  2. Projet mini avec boutons «Déchiffrez le code»
  3. Piano Arduino avec boutons-poussoirs et buzzer

Gestion d’un bouton poussoir avec Arduino

Le principal problème de l’utilisation de boutons avec un Arduino est le « rebondissement du contact », voir l’illustration ci-dessous. Le fait est que les contacts mécaniques des boutons ne se ferment et ne s’ouvrent jamais instantanément. Les contacts sont fermés et ouverts de manière répétée en l’espace de quelques millisecondes (période t dans le diagramme) – le microcontrôleur reçoit donc une série d’impulsions plutôt qu’un signal unique.

Gestion bouton poussoir avec Arduino
Gestion d’un bouton poussoir avec Arduino

Afin d’empêcher le microcontrôleur Arduino de faire claquer le bouton, divers circuits électriques avec des déclencheurs et des condensateurs sont utilisés. Mais il est beaucoup plus pratique et plus facile d’utiliser une méthode logicielle pour empêcher un éventuel cliquetis des boutons en utilisant un délai de quelques millisecondes ou en utilisant la bibliothèque Bounce2.h pour empêcher le cliquetis des boutons pour Arduino.

Comment brancher bouton avec résistance pull-up

Connecter bouton poussoir avec LED
Comment connecter bouton poussoir Arduino avec LED

Dans le premier exemple, utilisez les ports numériques de la carte pour connecter le bouton avec résistance pull-up et la commande digitalRead pour lire les données. Assemblez le circuit comme indiqué dans la figure ci-dessus et chargez le croquis. Notez que lorsque le bouton est relâché, un « 0 » logique est envoyé à la broche 2. Utilisez ce bouton pour allumer et éteindre la LED intégrée connectée au port numérique 13 de la carte microcontrôleur Arduino.

Programme Arduino pour bouton avec résistance pull-up

void setup() {
   pinMode(13, OUTPUT); // déclarer la broche 13 comme sortie
   pinMode(2, INPUT);    // déclarer la broche 2 comme entrée
}

void loop() {
   // à "1" logique, allumer la LED
   if (digitalRead(2) == HIGH) {
      digitalWrite(13, HIGH);
   }
   // à "0" logique, éteindre la LED
   if (digitalRead(2) == LOW) {
      digitalWrite(13, LOW);
   }
}

Explication du code pour branchement bouton poussoir avec résistance:

  1. la procédure setup est exécutée une fois, la procédure est utilisée pour configurer les ports sur le microcontrôleur (affectation du mode de fonctionnement du port);
  2. les constantes: INPUT, OUTPUT, LOW, HIGH, doivent être écrites en majuscules, sinon le compilateur ne les reconnaîtra pas et donnera une erreur.

Comment connecter bouton poussoir avec LED

Comment connecter bouton à Arduino avec résistance
Comment connecter bouton à Arduino avec résistance pull-up

Il est également possible de connecter les boutons à l’entrée analogique de l’Arduino (étiquetée Analog In sur la carte). La différence fondamentale de ce circuit est l’utilisation du port analogique du microcontrôleur. Nous utiliserons également la LED intégrée à la carte pour allumer et éteindre la LED. Basculez le bouton-poussoir sur l’entrée analogique A1 comme indiqué dans le schéma ci-dessus et chargez le code suivant dans la carte Arduino.

Programme Arduino pour bouton-poussoir et LED

void setup() {
   pinMode(13, OUTPUT); // déclarer la broche 13 comme sortie
   pinMode(A1, INPUT);    // déclarer la broche 2 comme entrée
}

void loop() {
   // si le bouton est pressé, allumer la LED
   if (analogRead(2) > 300) {
      digitalWrite(13, HIGH);
   }
   // si le bouton est relâché, éteindre la LED
   if (analogRead(2) < 300) {
      digitalWrite(13, LOW);
   }
}

Explication du code pour Arduino bouton-poussoir avec LED:

  1. dans ce croquis, nous utilisons la fonction analogRead pour lire les valeurs d’une entrée analogique et le port A1 peut être utilisé comme entrée numérique;
  2. les valeurs de l’entrée analogique peuvent varier (tout dépend de la résistance du circuit).

Connecter le bouton à l’Arduino sans résistance

Connecter le bouton Arduino sans résistance
Connecter les boutons à l’Arduino sans résistance, input_pullup

La commande pinMode() peut utiliser le mode de fonctionnement INPUT_PULLUP pour configurer le port du microcontrôleur, comme le montre cet exemple. Dans ce cas, une résistance pull-up de 5V est connectée à la broche, permettant aux boutons d’être connectés à l’Arduino sans résistance. Le programme suivant implémente la possibilité de lire les pressions sur les boutons poussoir avec lesquelles la variable sera augmentée ou diminuée.

Programme Arduino pour bouton INPUT_PULLUP

int x;

boolean button1WasUp = true;
boolean button2WasUp = true;

void setup() {
   pinMode(2, INPUT_PULLUP);
   pinMode(3, INPUT_PULLUP);

   Serial.begin(9600);
}

void loop() {
   boolean button1IsUp = digitalRead(2);   // connaître l'état des boutons
   boolean button2IsUp = digitalRead(3);

   // si le bouton 1 a été pressé, incrémenter la variable "x"
   if (button1WasUp && !button1IsUp) {
     delay(10);
     button1IsUp = digitalRead(2);
     if (!button1IsUp) { x = x + 1; Serial.println(x); }
   }
   button1WasUp = button1IsUp; // mémoriser l'état du bouton 1

   // si le bouton 2 a été pressé, réduire la variable "x"
   if (button2WasUp && !button2IsUp) {
     delay(10);
     button2IsUp = digitalRead(3);
     if (!button2IsUp) { x = x - 1; Serial.println(x); }
   }
   button2WasUp = button2IsUp; // mémoriser l'état du bouton 2
}

Explication du code pour bouton-poussoir avec input_pullup:

  1. la fonction delay(10); nécessaire dans le programme pour éliminer les effets du rebondissement du contact et de la fausse activation du bouton;
  2. la variable x sera affichée sur le moniteur du port lorsque le bouton est pressé.

Conclusion. Dans cet aperçu, nous avons examiné la connexion du bouton-poussoir et de la LED à l’Arduino Uno (branchement bouton poussoir arduino et code bouton poussoir input_pullup). Une connexion plus intéressante, utilisant le mode INPUT_PULLUP, est décrite dans le projet Minuterie Arduino avec compte à rebours. Si vous avez encore des questions à propos de cette revue – laissez-les dans les commentaires de ce post.





7 Replies to “Branchement bouton poussoir avec Arduino”

  1. Bonjour,

    Un copier coller et un chargement + tard :

    Une erreur est survenue lors du transfert du croquis
    avrdude: ser_open(): can’t open device « /dev/ttyACM0 »: Permission denied

    Je ne vois pas où ça pêche après avoir vérifié tous mes branchements.

    Cordialement

    1. Bonjour,

      je viens d’avoir le même problème. Il s’agit d’un problème de droits entre Linux et votre Arduino : « Permission denied ».
      La solution est en fait assez simple, il suffit de donner les droits en lecture/écriture à l’utilisateur

      Entrez dans un terminal la ligne suivante :
      sudo adduser yourUserName dialout
      en prenant évidemment le soin de remplacer le nom d’utilisateur 😉

      cela rajoutera votre utilisateur au groupe dialout qui peut avoir accès aux ports de communication. Enjoy

  2. Bonjour, avez-vous la réference d’un bouton poussoir pour arduino bien sur de diamètre 45mm et disponible sur amazon. merci à vous.

  3. Par quelle instruction la bibliothèque Bounce2.h est elle utilisée ?
    Je suppose que l’ on met #include

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. Découvrez comment les données de vos commentaires sont traitées.