Un bouton (ou bouton poussoir) est un coupe-circuit mécanique (un interrupteur).
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 :
Ici, nous utilisons le bouton "normalement ouvert".
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 :
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 }
{
Item-Bouton_poussoir_boutonpoussoir.jpg Published
Vous avez entré un nom de page invalide, avec un ou plusieurs caractères suivants :
< > @ ~ : * € £ ` + = / \ | [ ] { } ; ? #