Bouton poussoir: comment utiliser cet élément simple avec Arduino

bouton poussoir

Un le bouton poussoir est un bouton qui vous permet d'interrompre ou d'envoyer un signal électronique. Avec cet élément simple combiné à d'autres éléments, vous pouvez créer des projets pour une multitude d'applications. L'utilisation de ce type de boutons poussoirs est très courante lorsqu'il s'agit de projets avec Arduino. Et en combinant plusieurs de ces boutons, vous pouvez créer un clavier un peu plus complexe, bien qu'il existe déjà des claviers programmables pour ces utilisations ...

Soit dit en passant, il ne faut pas confondre le bouton poussoir avec un interrupteur. Ce sont des choses totalement différentes. La différence est que l'interrupteur ou l'interrupteur est activé ou désactivé à chaque pression exercée dessus. Alors que le bouton-poussoir ne restera dans un seul état que pendant la pression exercée sur lui. J'ai dit qu'il pouvait envoyer ou interrompre, car il existe deux types fondamentaux de boutons.

symbole du bouton poussoir

Exister Boutons-poussoirs NO ou normalement ouverts et boutons-poussoirs NF ou normalement fermés. Cela vous sera également émis par les relais. Et oui, c'est exactement la même opération. Lorsque vous avez un NC, il laissera le courant passer à travers ses bornes et il ne s'interrompt que lorsque vous appuyez dessus. En revanche, le NA ne laisse pas passer le courant lorsque la pression n'est pas exercée sur lui et ne le laisse passer que lorsque vous appuyez dessus.

Sachant que, est presque tout ce que vous devez savoir sur un bouton poussoir pour démarrer votre connexion et votre programmation en utilisant Arduino. La vérité est que c'est un élément si simple qu'il n'y a pas grand-chose à dire sur ce type de boutons poussoirs.

Intégration du bouton poussoir avec Arduino

circuit avec Arduino

La connexion d'un bouton poussoir pour le faire interagir avec Arduino ne pouvait pas être plus simple. Un exemple est le diagramme que vous pouvez voir sur ces lignes. Ce serait tout ce qu'il faut pour commencer à expérimenter. Mais bien sûr, avec ce programme, vous ne pouvez pas faire grand-chose. Il vous faudrait mettre un peu d'imagination pour décider de ce que ce bouton va contrôler. En fait, si vous lisez fréquemment hwlibre.es vous aurez déjà vu des articles où nous avons utilisé des boutons poussoirs ...

Façons de le connecter

pull-up et pull-down

Une chose que vous devez savoir est la question de l'anti-rebond et comment connecter ces boutons poussoirs. Tout d'abord, nous allons à la manière de les connecter, ce que vous savez déjà peut être avec les résistances pull-up et pull-down:

  • Remonter- Avec ce réglage de résistance, lorsque le bouton poussoir est enfoncé, le microcontrôleur ou Arduino peut voir ou lire un zéro sur cette broche. Autrement dit, il l'interprète comme un signal BAS.
  • Tirer vers le bas: Dans ce cas c'est l'inverse, vous pouvez lire ou recevoir un signal 1 ou HIGH via la broche connectée.

Ne le confondez pas avec le NC ou NA, ce qui est autre chose de différent comme nous l'avons vu précédemment. Ceci est indépendant de l'autre ...

Anti-rebond

Les boutons-poussoirs ont un l'effet de rebondissement lorsqu'il est pressé. C'est-à-dire que lorsqu'il est enfoncé ou relâché, il y a une fluctuation du signal qui passe à travers ses contacts et pourrait le faire passer d'un état HIGT à LOW ou vice versa sans vraiment vouloir que cela se produise. Cela peut produire un effet indésirable sur l'Arduino et lui faire faire des choses étranges, comme activer un élément alors que nous voulions vraiment l'éteindre avec le bouton poussoir, etc. C'est parce que l'Arduino interprète les rebonds comme s'il avait été pressé plus d'une fois ...

Cet effet négatif il a une solution. Pour cela, un petit condensateur doit être implémenté dans le circuit anti-rebond (méthode matérielle) ou logiciel (modification du code source), que l'on ait utilisé une configuration pull-up ou pull-down ou si elle est NC ou NO. Dans tous ces cas, la solution doit être mise en œuvre pour éviter ces rebonds.

Par exemple, des circuits pull-up et pull-down avec le condensateur anti-rebond ils ressembleraient à quelque chose comme ceci:

rebondeur

Alors que le méthode logicielle Cela peut être vu dans cet extrait de code:

if (digitalRead (button) == LOW) // Vérifie si le bouton est enfoncé
{
pressé = 1; // La variable change de valeur
}
if (digitalRead (bouton) == HIGH && pressé == 1)
{
// Effectuer l'action souhaitée
pressé = 0; // La variable revient à sa valeur d'origine
}

Exemple de projet simple

anti-rebond avec bouton poussoir et Arduino

Une fois que nous avons appris le sujet des façons de connecter notre bouton poussoir et le circuit anti-rebond, nous allons voir un exemple pratique pour contrôler une LED avec le bouton poussoir. Le schéma est tout aussi simple que vous pouvez le voir.

Une fois connecté correctement, la prochaine chose à faire est d'écrire le code dans Arduino IDE pour programmer votre panneau et commencer à expérimenter avec les boutons. Un exemple de code simple pour contrôler notre circuit serait le suivant:

// Exemple d'esquisse pour contrôler le bouton
broche int = 2;
état int;
pulsation int = 0;
void setup ()

{
pinMode (2, INPUT); // Pour lire l'impulsion en faisant cette entrée de broche

pinMode (13, OUTPUT); // Pour la LED

Serial.begin (9600);
}
boucle vide ()

{
if (digitalRead (2) == HIGH)

{

broche = 2;

antiBounce (); // Appel à la fonction anti-rebond

}
}
// Fonction anti-rebond du logiciel
vide anti-rebond ()

{
while (digitalRead (pin) == LOW);
état = digitalRead (13);
digitalWrite (13,! état);
while (digitalRead (pin) == HIGH);

}


5 commentaires, laissez le vôtre

Laisser un commentaire

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

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.

  1.   Image de balise Marcelo Castillo dit

    Brillant!!! Merci beaucoup, j'ai construit une CNC et paradoxalement, les boutons ont été la chose la plus difficile à régler pour moi.

  2.   Liliana dit

    Salut! Je consulte en tant que novice, dans la connexion avec le GND… .. le fil noir ne doit pas sortir de la ligne négative, qui est située au-dessus de celle représentée sur le schéma 2?

  3.   Jean dit

    Excellente explication .. il y a quelques années, j'ai fait un projet d'allumage de voiture et la vérité est que je ne pourrais jamais faire une frappe correcte. Pour l'allumage .. Je vais essayer cette méthode. Je vous remercie beaucoup pour cette aide précieuse

  4.   Omar Romero Rincón dit

    Bonjour, je fais un projet avec trois boutons et 5 LED avec la séquence suivante.
    1 bouton poussoir envoie un signal à 2 LED, que j'ai appelées 1 et 2.
    le deuxième bouton-poussoir envoie un signal à 3 LED, appelées 2,3 et 4.
    mon troisième bouton-poussoir envoie un signal à 3 autres LED, appelées 3,4, 5 et XNUMX.

    J'ai réussi à faire cette séquence, je n'ai qu'un problème, en appuyant sur 2 boutons, cela envoie un faux signal à la LED qui devrait rester allumée la faisant clignoter par intermittence, je l'ai contrôlé en mettant un délai (de 2 secondes, c'est ce dont j'ai besoin pour que les LED restent allumées puis s'éteignent. alors ma question est de savoir comment puis-je mettre la fonction millis dans mon programme, je ne comprends pas comment fonctionne millis, je veux savoir si vous pouvez m'aider en en faisant un exemple pour 3 boutons utilisant des millis dans chacun d'eux, j'ai besoin de millis pour pouvoir appuyer sur les boutons à tout moment sans retarder l'arduino.

    1.    Isaac dit

      Salut Omar,
      Je vous recommande de voir notre tutoriel Arduino :
      https://www.hwlibre.com/programacion-en-arduino/
      Et vous pouvez aussi voir notre article sur millis() :
      https://www.hwlibre.com/millis-arduino/
      Salutations.