Comment utiliser un bouton poussoir sur Arduino pour des projets interactifs

Tuto Arduino · Niveau débutant

Le bouton poussoir est l’un des tout premiers composants qu’on branche sur une carte Arduino : il permet de donner une consigne simple (allumer une LED, déclencher un minuteur, valider une action) à un microcontrôleur. Ce guide détaille le câblage, la lecture logicielle de l’état du bouton, et le traitement du rebond mécanique — le piège classique du débutant.

Ce qu’il vous faut

  • Une carte Arduino (Uno, Nano ou équivalent)
  • 1 bouton poussoir
  • 1 résistance de 10 kΩ (si vous n’utilisez pas la résistance interne)
  • 1 breadboard et quelques fils de câblage
  • Le logiciel Arduino IDE installé sur votre ordinateur

Infos pratiques

  • Temps estimé : 15 à 20 minutes
  • Niveau : débutant
  • Tension de travail : 5V (aucun risque électrique sur ce montage)

En 4 étapes

  1. Comprendre la logique du bouton poussoir (état haut / état bas)
  2. Câbler le bouton sur la breadboard
  3. Lire son état dans le code et réagir (ex. allumer une LED)
  4. Filtrer le rebond pour une lecture fiable

Comprendre les fondamentaux du bouton poussoir sur Arduino #

Un bouton poussoir est un composant électromécanique qui établit temporairement une connexion électrique lorsqu’on appuie dessus. Sur un montage Arduino, il sert à fournir une consigne externe au microcontrôleur : il peut fonctionner selon deux logiques différentes.

En logique active-bas, la broche lit un niveau bas (LOW) au moment de l’appui. En logique active-haut, c’est l’inverse : la broche passe à un niveau haut (HIGH) lorsqu’on presse le bouton. Ce choix dépend de la façon dont vous câblez la résistance de rappel — appelée résistance de pull-up (reliée au +5V) ou de pull-down (reliée à la masse).

À lire La méthode confidentielle qui révèle la puissance secrète du Logitech Z-5500 Digital pour un son immersif inégalé

Sans résistance de rappel, la broche d’entrée reste dans un état électrique indéterminé (« flottant ») quand le bouton n’est pas pressé, ce qui provoque des lectures instables et imprévisibles. C’est pour cette raison qu’une résistance — interne ou externe — est indispensable.

Câbler et lire l’état du bouton #

Voici la séquence de montage et de lecture la plus courante, avec une résistance de pull-up externe de 10 kΩ :

  1. Câblez la première patte du bouton vers une entrée numérique de l’Arduino (par exemple la broche 2).
  2. Câblez la seconde patte du bouton vers la masse (GND).
  3. Ajoutez la résistance de 10 kΩ entre l’entrée numérique et le +5V pour un montage pull-up manuel — ou activez la résistance interne avec pinMode(2, INPUT_PULLUP);, disponible sur la quasi-totalité des cartes Arduino.
  4. Configurez la broche en entrée dans le code avec pinMode(2, INPUT); (ou INPUT_PULLUP si vous utilisez la résistance interne).
  5. Lisez l’état du bouton avec digitalRead(2) : la fonction renvoie HIGH ou LOW selon l’état pressé ou relâché.
  6. Réagissez à cet état, par exemple en pilotant la LED intégrée sur la broche 13 avec digitalWrite(13, HIGH); si le bouton est pressé, et LOW sinon.

Attention au sens de lecture

Avec INPUT_PULLUP, la logique est inversée par rapport à un montage pull-down classique : la broche lit HIGH au repos et LOW lorsque le bouton est pressé. Un oubli fréquent est de tester == HIGH pour détecter l’appui alors qu’il faut tester == LOW.

Gérer le rebond (debounce) #

Lors de l’appui, le contact du bouton oscille brièvement avant de se stabiliser, à cause de la mécanique interne du composant. Ce phénomène, appelé rebond, génère plusieurs changements d’état parasites en quelques millisecondes — ce qui peut faire croire au programme que le bouton a été pressé plusieurs fois d’affilée.

Deux approches permettent de le corriger :

À lire Comment fonctionne Internet ? 12 questions toutes bêtes (et leurs réponses)

  • Filtrage logiciel : après avoir détecté un changement d’état, on attend un court délai (souvent une vingtaine de millisecondes) avant de considérer la nouvelle valeur comme stable, via delay() ou une temporisation non bloquante avec millis().
  • Filtrage matériel : un réseau résistance-condensateur (par exemple une résistance associée à un condensateur de 100 nF) placé sur la ligne du bouton lisse électriquement le signal avant qu’il n’atteigne l’entrée numérique.

Applications pratiques et cas d’usage #

Une fois la lecture fiabilisée, le bouton poussoir devient la brique de base de nombreux montages :

  • Contrôle d’éclairage : allumer ou éteindre une LED à chaque appui, ou faire défiler plusieurs états lumineux avec une logique conditionnelle.
  • Minuterie automatisée : déclencher un décompte avec millis() — par exemple une minuterie de lumière qui s’éteint automatiquement après un délai fixe.
  • Détection d’événements : déclencher une alerte ou compter des occurrences, en combinant plusieurs boutons ou capteurs sur des cartes comme l’Arduino Mega ou un ESP32.
  • Interfaces à plusieurs boutons : associer plusieurs entrées à un clavier matriciel ou à un écran LCD pour construire un menu de navigation.

Erreurs courantes à éviter #

  • Oublier la résistance de rappel (pull-up ou pull-down), ce qui produit des lectures fausses et instables.
  • Confondre INPUT et INPUT_PULLUP dans pinMode(), ce qui inverse la logique de lecture.
  • Multiplier les boutons sans vérifier le nombre de broches numériques disponibles sur la carte.
  • Câbler directement les deux pattes du bouton entre le +5V et la masse sans passer par une entrée numérique, ce qui crée un court-circuit.
  • Ignorer le rebond mécanique, ce qui fait comptabiliser plusieurs appuis pour un seul geste.

Pour aller plus loin #

Une fois la lecture d’un bouton simple maîtrisée, plusieurs pistes permettent d’aller plus loin : les interruptions matérielles (attachInterrupt()) pour réagir à un appui sans bloquer la boucle principale, les extenseurs d’entrées/sorties I2C (type MCP23017) pour économiser des broches sur des montages à plusieurs boutons, ou encore les capteurs tactiles capacitifs qui remplacent le bouton mécanique par une simple surface à effleurer. Les forums et communautés Arduino restent la meilleure ressource pour approfondir un montage ou dépanner un cas particulier.

À retenir

  • Toujours prévoir une résistance de rappel (interne ou externe) pour éviter une entrée flottante.
  • INPUT_PULLUP simplifie le câblage mais inverse la logique de lecture (LOW = pressé).
  • Le rebond mécanique doit être filtré, logiciellement ou matériellement, pour une lecture fiable.
  • La fonction digitalRead() est le point d’entrée de toute logique bouton poussoir.
  • Les interruptions (attachInterrupt()) sont utiles dès que la réactivité devient critique.
Faut-il toujours une résistance avec un bouton poussoir sur Arduino ?
Oui. Sans résistance de rappel (pull-up ou pull-down), la broche d’entrée reste dans un état électrique indéterminé lorsque le bouton n’est pas pressé, ce qui produit des lectures instables.
Quelle est la différence entre pull-up et pull-down ?
Une résistance de pull-up relie l’entrée au +5V au repos (l’appui fait passer la lecture à l’état bas). Une résistance de pull-down relie l’entrée à la masse au repos (l’appui fait passer la lecture à l’état haut). Le mode interne INPUT_PULLUP évite d’ajouter une résistance externe.
Comment éviter les faux déclenchements liés au rebond ?
En ajoutant un court délai de validation après un changement d’état détecté (filtrage logiciel), ou en plaçant un réseau résistance-condensateur sur la ligne du bouton (filtrage matériel).
Peut-on utiliser plusieurs boutons sur la même carte Arduino ?
Oui, dans la limite des broches numériques disponibles. Au-delà, un clavier matriciel ou un extenseur d’entrées/sorties I2C permet de gérer davantage de boutons sans saturer les broches de la carte.

Partagez votre avis

Aussi : consultant SEO Bordeaux · création de site e-commerce