SOMMAIRE ►
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:
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.

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

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:
- 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);
- 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

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:
- 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;
- 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

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:
- la fonction delay(10); nécessaire dans le programme pour éliminer les effets du rebondissement du contact et de la fausse activation du bouton;
- 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.








Esplication Juste super claire
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
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
merci pour ce code :/
Bonjour, avez-vous la réference d’un bouton poussoir pour arduino bien sur de diamètre 45mm et disponible sur amazon. merci à vous.
Non. Nous ne faisons pas de ventes
Par quelle instruction la bibliothèque Bounce2.h est elle utilisée ?
Je suppose que l’ on met #include