Item:Bouton poussoir : Différence entre versions

(Page créée avec « {{Item |Main_Picture=Item-Bouton_poussoir_250px-Bp.jpg |Description=Un bouton (ou bouton poussoir et bouton-poussoir) est un interrupteur simple qui permet de contrôler l... »)
 
 
(9 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 
{{Item
 
{{Item
|Main_Picture=Item-Bouton_poussoir_250px-Bp.jpg
+
|Main_Picture=Item-Bouton_poussoir_boutonpoussoir.jpg
|Description=Un bouton (ou bouton poussoir et bouton-poussoir) est un interrupteur simple qui permet de contrôler les capacités d'une machine ou d'un objet1. C'est le principal moyen d'interaction entre l'homme et la machine2.
+
|Description=Un bouton (ou bouton poussoir) est un coupe-circuit mécanique (un interrupteur).
|Categories=Outils
+
|Categories=Matériel
|Cost=5
+
|Cost=0,01
 
|Currency=EUR (€)
 
|Currency=EUR (€)
|ItemLongDescription=Les boutons sont généralement fabriqués à partir de matériaux durs, habituellement en [https://fr.wikipedia.org/wiki/Mati%C3%A8re_plastique plastique] ou en [https://fr.wikipedia.org/wiki/M%C3%A9tal métal], mais peuvent également être constitués de [https://fr.wikipedia.org/wiki/Caoutchouc_(mat%C3%A9riau) caoutchouc]. On distingue deux types de boutons : le bouton normalement ouvert et celui normalement fermé (contact repos (CR) ou contact travail (CT))<sup id="cite_ref-physique-chimie-college.fr_3-0" class="reference">[https://fr.wikipedia.org/wiki/Bouton_(%C3%A9lectricit%C3%A9)#cite_note-physique-chimie-college.fr-3 3]</sup>.
+
|ItemLongDescription=C'est un interrupteur simple qui permet de contrôler les capacités d'une machine ou d'un objet. C'est le principal moyen d'interaction entre l'homme et la machine.
{| class="wikitable" align="right"
+
 
|
+
Le bouton poussoir à la particularité de revenir dans son état initiale lorsque qu'on cesse d'appuyer dessus.
* Représentation symbolique d'un interrupteur de type poussoir
+
 
* Bouton normalement ouvert<sup id="cite_ref-physique-chimie-college.fr_3-1" class="reference">[https://fr.wikipedia.org/wiki/Bouton_(%C3%A9lectricit%C3%A9)#cite_note-physique-chimie-college.fr-3 3]</sup>.
+
 
* Bouton normalement fermé<sup id="cite_ref-physique-chimie-college.fr_3-2" class="reference">[https://fr.wikipedia.org/wiki/Bouton_(%C3%A9lectricit%C3%A9)#cite_note-physique-chimie-college.fr-3 3]</sup>.
+
Il en existe de deux types :
 +
 
 +
*Le plus courant c'est le bouton poussoir '''"normalement ouvert"''', le courant ne passe pas quand il est repos, c'est quand on appuie dessus que le courant passe.
 +
*Il existe aussi le bouton poussoir dit '''"normalement fermé"''', au repos il laisse passer le courant, en appuie, il coupe le circuit, le courant ne passe pas.
 +
 
 +
<br />Ici, nous utilisons le bouton "normalement ouvert".
 +
 
 +
<br />
 +
 
 +
== Subtilité d'utilisation : ==
 +
Pour que le micro-contrôleur reçoive un signal clair du bouton, nous pouvons utiliser des résistances de pull-up ou pull-down.
 +
 
 +
 
 +
Enfin, un bouton, c'est système mécanique. Et contrairement à la théorie, la réalité est complexe. Lorsqu'on appuie et qu'on relâche un bouton, le signal n'est pas simple, ouvert ou fermé, mais il y a un "rebond", un peu comme si on tremblait quand on appuie sur le bouton. Le micro-contrôleur peut alors interpréter le signal comme plusieurs appuis sur le bouton, ce qui est embêtant dans certains cas.
 +
 
 +
 
 +
Il existe deux solutions à ce problème :
 +
 
 +
* mettre un délai de quelques centaines de millisecondes. Cette solution présente le défaut d'utiliser la fonction "delay(200)" qui met en pause le programme.
 +
* mettre une temporisation avec la fonction "millis". Cette solution était bien meilleure, car elle ne bloque pas le programme.
 +
 
 +
Gérer la temporisation : voir ce tuto très bien fait : http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement
 +
 
 +
 
 +
<syntaxhighlight lang="arduino" line="1">
 +
/*
 +
* Code repris de http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement
 +
*/
 +
 
 +
int BUTTON_PIN = 0; //GPIO 0 correspond à la broche D3
 +
int previousButtonState;
 +
int count =0;
 +
 
 +
unsigned long debounceTimeStamp;
 +
 
 +
void setup() {
 +
Serial.begin(57600);
 +
pinMode(  BUTTON_PIN , INPUT_PULLUP );
 +
previousButtonState = digitalRead( BUTTON_PIN );
 +
}
 +
 
 +
void loop() {
 +
if ( millis() - debounceTimeStamp >= 5  ) {
 +
  int currentButtonState = digitalRead( BUTTON_PIN );
 +
  if ( currentButtonState != previousButtonState ) {
 +
    debounceTimeStamp = millis();
 +
    if ( currentButtonState == LOW ) {
 +
      count = count + 1;
 +
      Serial.println(count);
 +
      }
 +
    }
 +
    previousButtonState = currentButtonState;
 +
  }
 +
}
 +
 
 +
</syntaxhighlight><br />
 +
 
 +
==Câblage : ==
 +
{{#annotatedImageLight:Fichier:Item-Bouton poussoir Boutonpoussoir2 bb.jpg|0=200px|hash=|jsondata=|mediaClass=Image|type=frameless|align=center|src=https://www.wikidebrouillard.org/images/9/9d/Item-Bouton_poussoir_Boutonpoussoir2_bb.jpg|href=./Fichier:Item-Bouton poussoir Boutonpoussoir2 bb.jpg|resource=./Fichier:Item-Bouton poussoir Boutonpoussoir2 bb.jpg|caption=|size=200px}}
 +
 
 +
==Code Minimal : ==
 +
<br />
 +
{| class="wikitable" cellspacing="0" border="0"
 +
| height="17" bgcolor="#999999" align="left" |
 +
| valign="middle" bgcolor="#999999" align="center" |
 +
| bgcolor="#999999" align="center" |Bouton poussoir
 +
|-
 +
| rowspan="2" valign="middle" height="49" bgcolor="#999999" align="center" |Avant le Setup
 +
| valign="middle" bgcolor="#999999" align="center" |Importation de la bibliothèque
 +
| valign="middle" align="left" |
 +
|-
 +
| valign="middle" bgcolor="#999999" align="center" |Création de l’objet
 +
| valign="middle" align="left" |
 +
|-
 +
| valign="middle" height="17" bgcolor="#999999" align="center" |Dans le Setup
 +
| valign="middle" bgcolor="#999999" align="center" |Démarrage de l’objet
 +
| valign="middle" align="left" |pinMode(num_broche,INPUT_PULLUP) ;
 +
|-
 +
| valign="middle" height="41" bgcolor="#999999" align="center" |Dans le Loop
 +
| valign="middle" bgcolor="#999999" align="center" |Utilisation
 +
| valign="middle" align="left" |int val_bouton = digitalRead(num_broche);<br />
 
|}
 
|}
Dans un bouton normalement ouvert, la liaison électrique est créée quand on appuie sur le bouton, et dans un bouton normalement fermé, le circuit électrique est ouvert quand on appuie sur le bouton (voir schéma)<sup id="cite_ref-physique-chimie-college.fr_3-3" class="reference">[https://fr.wikipedia.org/wiki/Bouton_(%C3%A9lectricit%C3%A9)#cite_note-physique-chimie-college.fr-3 3]</sup>. Le mécanisme du bouton est majoritairement équipé d'un ressort ou d'un système permettant automatiquement le retour en position initiale<sup id="cite_ref-larousse.fr_1-1" class="reference">[https://fr.wikipedia.org/wiki/Bouton_(%C3%A9lectricit%C3%A9)#cite_note-larousse.fr-1 1]</sup>.
+
<syntaxhighlight lang="arduino" line="1" start="1">
 +
////////////////////////
 +
//  *Code Minimal*  //
 +
//    -Le Bouton-    //
 +
////////////////////////
 +
/*Les programmes "Code Minimal" des petits débrouillards sont conçu pour
 +
permettre la prise en main rapide d'un composant électronique.
 +
A retrouver sur https://www.wikidebrouillard.org
 +
 
 +
-Le Bouton-
 +
 
 +
Matériel :
 +
- un D1 mini
 +
- un bouton
 +
 
 +
le bouton branché à la broche D3 du D1 mini
 +
car la broche D3 possède une résistance de pullup interne
 +
Une résistance de pullup c'est lorsque la broche est branchée a une résistance reliée au niveau haut de la carte(HIGH)
 +
dans le D1 mini il y a donc une résistance de 10Kohm qui relie la broche D3 au +3,3V
 +
D3---^/\/v---+3V3
 +
 +
  ___
 +
/ ___ \
 +
|_|  | |
 +
    /_/  
 +
    _  ___  _
 +
    |_| |___|_| |_
 +
        ___|_  _|
 +
        |___| |_|
 +
Les petits Débrouillards - décembre 2020 - CC-By-Sa http://creativecommons.org/licenses/by-nc-sa/3.0/
 +
*/
 +
 
 +
// Déclaration des variables constantes
 +
const int brocheBouton = D3; // Broche où est connectée le bouton
 +
const int brocheLed =  D4;  // Broche D4, où la led interne au wemos est connectée
  
Le plus souvent, les boutons poussoirs sont équipés d'un mécanisme qui maintient la position enclenchée lorsqu'il est actionné par une pression courte. Dans la majeure partie des cas, l'action sur le bouton déclenche le processus de façon durable, jusqu'au moment où le bouton est de nouveau actionné, ce qui arrête le processus. Dans ce cas là, le bouton peut rester légèrement enfoncé, ce qui indique l'état actionné de l'interrupteur<sup id="cite_ref-doc.pcsoft.fr_4-0" class="reference">[https://fr.wikipedia.org/wiki/Bouton_(%C3%A9lectricit%C3%A9)#cite_note-doc.pcsoft.fr-4 4]</sup>. Une deuxième action sur le bouton permet de revenir à la position initiale. Le processus peut également être arrêté par un autre bouton. Ces boutons sont parfois équipés d'une minuterie, permettant de faire revenir le bouton automatiquement en position initiale<sup id="cite_ref-doc.pcsoft.fr_4-1" class="reference">[https://fr.wikipedia.org/wiki/Bouton_(%C3%A9lectricit%C3%A9)#cite_note-doc.pcsoft.fr-4 4]</sup>.
+
// Boucle d'initialisation
 +
void setup() {
 +
  pinMode(brocheLed, OUTPUT);  // Initialisation de la broche de la led en sortie
  
Le système qui permet de gérer le passage du flux électrique peut être de plusieurs sortes, comme des inverseurs et des encodeurs mécaniques ou des boutons à commande magnétique ou des contacts de relais<sup id="cite_ref-framboise314.fr_2-1" class="reference">[https://fr.wikipedia.org/wiki/Bouton_(%C3%A9lectricit%C3%A9)#cite_note-framboise314.fr-2 2]</sup>...
+
  pinMode(brocheBouton, INPUT_PULLUP); // Initialisation de la broche du bouton en entrée et activation du pull-up interne
 +
}
  
Les boutons peuvent être de formes simples, ou étudiées ergonomiquement. Certains possèdent une surface d’appui convexe, d'autre concave, pour que le doigt appréhende mieux le bouton, sans-même le regard. Les boutons sont parfois équipés de petites excroissances rugueuses ou de sur-épaisseurs, dont le but est de reconnaitre un bouton en particulier grâce à la sensibilité digitale. Afin d'indiquer l'état du circuit, un bouton peut comporter un [https://fr.wikipedia.org/wiki/Diode_%C3%A9lectroluminescente voyant], intégré constituant tout ou partie du bouton, ou déporté, sa position pouvant être à proximité du bouton. Les boutons peuvent être différenciés par leur taille plus ou moins grosse<sup id="cite_ref-framboise314.fr_2-2" class="reference">[https://fr.wikipedia.org/wiki/Bouton_(%C3%A9lectricit%C3%A9)#cite_note-framboise314.fr-2 2]</sup>, ou par leur position stratégique ou ergonomique. Ils peuvent l'être par un code de couleurs, les boutons important étant souvent rouges pour l'arrêt ou vert pour le lancement, mais peuvent aussi arborer des pictogrammes afin de représenter le processus que va déclencher l'action sur le bouton ou des inscription, souvent des termes abrégés. les boutons peuvent également être rétro-éclairés afin de faciliter leur utilisation dans le noir ou la pénombre<sup id="cite_ref-bricoleurpro.com_5-0" class="reference">[https://fr.wikipedia.org/wiki/Bouton_(%C3%A9lectricit%C3%A9)#cite_note-bricoleurpro.com-5 5]</sup>.
+
//Boucle principale
 +
void loop() {
 +
// Lecture de l'état du bouton et stockage dans la variable etatBouton
 +
// Déclaration de variable d'état locale (dite locale car déclarée dans la boucle "loop").
 +
  bool etatBouton = digitalRead(brocheBouton); //// Variable permettant de récupérer l'état du bouton
  
Le bouton d'arrêt d'urgence est également nommé « bouton coup de poing » en raison de son mode d'actionnement dans les cas d'urgence, qui doit pouvoir se faire rapidement et sans réfléchir. Cette action rapide est favorisée par la couleur rouge et la forme plate et large du bouton<sup id="cite_ref-irsst.qc.ca_6-0" class="reference">[https://fr.wikipedia.org/wiki/Bouton_(%C3%A9lectricit%C3%A9)#cite_note-irsst.qc.ca-6 6]</sup>.
+
  // Si le bouton est appuyé, on éteins la led
 +
  if (etatBouton == HIGH) {
 +
    // extinction de la led
 +
    digitalWrite(brocheLed, HIGH);
 +
  } else {
 +
    // sinon allumage de la led
 +
    digitalWrite(brocheLed, LOW);
 +
  }
 +
}
 +
</syntaxhighlight><br />
 
}}
 
}}
 
{{Tuto Status
 
{{Tuto Status
 
|Complete=Published
 
|Complete=Published
 
}}
 
}}

Version actuelle datée du 25 janvier 2024 à 11:38


Item-Bouton poussoir boutonpoussoir.jpg

Bouton poussoir

Un bouton (ou bouton poussoir) est un coupe-circuit mécanique (un interrupteur).

0,01EUR (€)


Description longue

C'est un interrupteur simple qui permet de contrôler les capacités d'une machine ou d'un objet. C'est le principal moyen d'interaction entre l'homme et la machine.

Le bouton poussoir à la particularité de revenir dans son état initiale lorsque qu'on cesse d'appuyer dessus.


Il en existe de deux types :

  • Le plus courant c'est le bouton poussoir "normalement ouvert", le courant ne passe pas quand il est repos, c'est quand on appuie dessus que le courant passe.
  • Il existe aussi le bouton poussoir dit "normalement fermé", au repos il laisse passer le courant, en appuie, il coupe le circuit, le courant ne passe pas.


Ici, nous utilisons le bouton "normalement ouvert".


Subtilité d'utilisation :

Pour que le micro-contrôleur reçoive un signal clair du bouton, nous pouvons utiliser des résistances de pull-up ou pull-down.


Enfin, un bouton, c'est système mécanique. Et contrairement à la théorie, la réalité est complexe. Lorsqu'on appuie et qu'on relâche un bouton, le signal n'est pas simple, ouvert ou fermé, mais il y a un "rebond", un peu comme si on tremblait quand on appuie sur le bouton. Le micro-contrôleur peut alors interpréter le signal comme plusieurs appuis sur le bouton, ce qui est embêtant dans certains cas.


Il existe deux solutions à ce problème :

  • mettre un délai de quelques centaines de millisecondes. Cette solution présente le défaut d'utiliser la fonction "delay(200)" qui met en pause le programme.
  • mettre une temporisation avec la fonction "millis". Cette solution était bien meilleure, car elle ne bloque pas le programme.

Gérer la temporisation : voir ce tuto très bien fait : http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement


 1 /*
 2 * Code repris de http://wiki.t-o-f.info/Arduino/%c3%89liminationDuRebondissement
 3 */
 4 
 5 int BUTTON_PIN = 0; //GPIO 0 correspond à la broche D3
 6 int previousButtonState;
 7 int count =0;
 8 
 9 unsigned long debounceTimeStamp;
10 
11 void setup() {
12  Serial.begin(57600);
13  pinMode(  BUTTON_PIN , INPUT_PULLUP );
14  previousButtonState = digitalRead( BUTTON_PIN );
15 }
16 
17 void loop() {
18  if ( millis() - debounceTimeStamp >= 5  ) {
19    int currentButtonState = digitalRead( BUTTON_PIN );
20    if ( currentButtonState != previousButtonState ) {
21      debounceTimeStamp = millis();
22      if ( currentButtonState == LOW ) {
23        count = count + 1;
24        Serial.println(count);
25        }
26      }
27      previousButtonState = currentButtonState;
28    }
29 }

Câblage :

Item-Bouton poussoir Boutonpoussoir2 bb.jpg

Code Minimal :


{

Commentaires

Published