Différences entre les versions de « Bouton poussoir : programmation avec Arduino »
(20 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
[[Fichier:IllustrationBoutonPoussoir.png|vignette]] | |||
== Introduction == | == Introduction == | ||
Lors de l'appui sur le bouton, deux lames sont mise en mouvement et vienne en contact l'une de l'autre soit au repos (normalement fermé) ou lors de l'appui (normalement ouvert). | Lors de l'appui sur le bouton, deux lames sont mise en mouvement et vienne en contact l'une de l'autre soit au repos (normalement fermé) ou lors de l'appui (normalement ouvert). | ||
Ligne 4 : | Ligne 5 : | ||
== Implémentation == | == Implémentation == | ||
Il est nécessaire d'utiliser une résistance afin de fixer le potentiel lorsque le bouton poussoir est ouvert. | ===Résistance de tirage=== | ||
Il est nécessaire d'utiliser une résistance afin de fixer le potentiel lorsque le bouton poussoir est ouvert. | |||
Ceci est réalisé avec une résistance de tirage appelée résistance de Pull-Up (tirage vers le haut) ou une résistance de Pull-Down (tirage vers le bas). | |||
Valeur de la résistance de tirage : 10k Ohm (avec une résistance de 1k Ohm ça fonctionne également mais la consommation de courant sera plus importante). | |||
===Condensateur en parallèle du bouton poussoir pour filtrer les rebonds=== | |||
Il est nécessaire de placer un condensateur en parallèle du bouton poussoir afin de filtrer les rebonds. | |||
Les explications sont par ici : [https://www.youtube.com/watch?v=ftdqUflYG3Y&t=1569s | Arduino UNO etc : Réagir à l'appui sur un bouton poussoir (front descendant...). Eviter les rebonds., Eric Peronnin, 2021] | |||
Valeur du condensateur anti-rebonds : 10nF typiquement | |||
=== Implémentation avec résistance de Pull-Up === | === Implémentation avec résistance de Pull-Up === | ||
Ligne 13 : | Ligne 24 : | ||
[[Fichier:BP PullUp schéma.png|300px]] | [[Fichier:BP PullUp schéma.png|300px]] | ||
[[Fichier:BP PullUp bb.png|500px]] | [[Fichier:BP PullUp bb.png|500px]] | ||
* L'entrée 2 de l'Arduino voit 5V quand le bouton poussoir est relâché | |||
* L'entrée 2 de l'Arduino voit 0V quand le bouton poussoir est pressé | |||
==== Code Arduino minimal en configuration pull-up==== | |||
<nowiki> | |||
// Constante (la valeur ne peut pas changer au cours de l’exécution du programme): | |||
const int buttonPin = 2; // numéro de la pin du bouton poussoir | |||
// variables (la valeur peut changer au cours de l’exécution du programme): | |||
int buttonState = 0; // variable pour lire le status du bouton poussoir | |||
void setup() { | |||
// initialise la pin du bouton poussoir en entrée | |||
pinMode(buttonPin, INPUT); | |||
} | |||
void loop() { | |||
// lecture de l'état du bouton poussoir et stock son état dans la variable | |||
// Si le bouton poussoir est relaché buttonState=1 | |||
// Si le bouton poussoir est pressé buttonState=0 | |||
buttonState = digitalRead(buttonPin); | |||
// Placer à cet endroit du programme un test sur la variable buttonState et effectuer une action (allumer une LED par exemple) | |||
} | |||
</nowiki> | |||
=== Implémentation avec résistance de Pull-Down === | |||
==== Câblage avec résistance pull-down ==== | |||
[[Fichier:BP PullDown schéma.png|300px]] | |||
[[Fichier:BP PullDown bb.png|500px]] | |||
* L'entrée 2 de l'Arduino voit 0V quand le bouton poussoir est relâché | * L'entrée 2 de l'Arduino voit 0V quand le bouton poussoir est relâché | ||
* L'entrée 2 de l'Arduino voit 5V quand le bouton poussoir est pressé | * L'entrée 2 de l'Arduino voit 5V quand le bouton poussoir est pressé | ||
// variables | ==== Code Arduino minimal en configuration pull-down==== | ||
int buttonState = 0; // variable | <nowiki> | ||
// Constante (la valeur ne peut pas changer au cours de l’exécution du programme): | |||
const int buttonPin = 2; // numéro de la pin du bouton poussoir | |||
// variables (la valeur peut changer au cours de l’exécution du programme): | |||
int buttonState = 0; // variable pour lire le status du bouton poussoir | |||
void setup() { | void setup() { | ||
// | // initialise la pin du bouton poussoir en entrée | ||
pinMode(buttonPin, INPUT); | pinMode(buttonPin, INPUT); | ||
} | } | ||
void loop() { | void loop() { | ||
// | // lecture de l'état du bouton poussoir et stock son état dans la variable | ||
// Si le bouton poussoir est relaché buttonState=0 | |||
// Si le bouton poussoir est pressé buttonState=1 | |||
buttonState = digitalRead(buttonPin); | buttonState = digitalRead(buttonPin); | ||
// | // Placer à cet endroit du programme un test sur la variable buttonState et effectuer une action (allumer une LED par exemple) | ||
} | } | ||
</nowiki> | </nowiki> | ||
=== Code | == Références == | ||
* [https://www.arduino.cc/reference/en/language/functions/digital-io/digitalread/ Code exemple de la fonction digitalRead() dans arduino.cc, 2022] | |||
* [https://www.youtube.com/watch?v=ftdqUflYG3Y&t=1569s Arduino UNO etc : Réagir à l'appui sur un bouton poussoir (front descendant...). Eviter les rebonds., Eric Peronnin, 2021] | |||
* [https://www.youtube.com/watch?v=hriSLWYOMyM Tuto Live Arduino épisode 3 : Entrées numériques et boutons , Eskimon, 2019] | |||
* [https://eskimon.fr/tuto-arduino-204-un-simple-bouton Blog de Eskimon, 2013] | |||
[[Category: Objets connectés]] | |||
[[Category: Capteurs]] |
Version actuelle datée du 7 décembre 2022 à 15:50
Introduction
Lors de l'appui sur le bouton, deux lames sont mise en mouvement et vienne en contact l'une de l'autre soit au repos (normalement fermé) ou lors de l'appui (normalement ouvert). Pour pouvoir revenir à sa position initiale après utilisation, le bouton poussoir est doté d’un mécanisme constitué d’un ressort de rappel. Lorsque vous appuyez dessus avec le doigt, le ressort permet au bouton de revenir à sa place.
Implémentation
Résistance de tirage
Il est nécessaire d'utiliser une résistance afin de fixer le potentiel lorsque le bouton poussoir est ouvert.
Ceci est réalisé avec une résistance de tirage appelée résistance de Pull-Up (tirage vers le haut) ou une résistance de Pull-Down (tirage vers le bas).
Valeur de la résistance de tirage : 10k Ohm (avec une résistance de 1k Ohm ça fonctionne également mais la consommation de courant sera plus importante).
Condensateur en parallèle du bouton poussoir pour filtrer les rebonds
Il est nécessaire de placer un condensateur en parallèle du bouton poussoir afin de filtrer les rebonds.
Les explications sont par ici : | Arduino UNO etc : Réagir à l'appui sur un bouton poussoir (front descendant...). Eviter les rebonds., Eric Peronnin, 2021
Valeur du condensateur anti-rebonds : 10nF typiquement
Implémentation avec résistance de Pull-Up
Câblage avec résistance pull-up
- L'entrée 2 de l'Arduino voit 5V quand le bouton poussoir est relâché
- L'entrée 2 de l'Arduino voit 0V quand le bouton poussoir est pressé
Code Arduino minimal en configuration pull-up
// Constante (la valeur ne peut pas changer au cours de l’exécution du programme): const int buttonPin = 2; // numéro de la pin du bouton poussoir // variables (la valeur peut changer au cours de l’exécution du programme): int buttonState = 0; // variable pour lire le status du bouton poussoir void setup() { // initialise la pin du bouton poussoir en entrée pinMode(buttonPin, INPUT); } void loop() { // lecture de l'état du bouton poussoir et stock son état dans la variable // Si le bouton poussoir est relaché buttonState=1 // Si le bouton poussoir est pressé buttonState=0 buttonState = digitalRead(buttonPin); // Placer à cet endroit du programme un test sur la variable buttonState et effectuer une action (allumer une LED par exemple) }
Implémentation avec résistance de Pull-Down
Câblage avec résistance pull-down
- L'entrée 2 de l'Arduino voit 0V quand le bouton poussoir est relâché
- L'entrée 2 de l'Arduino voit 5V quand le bouton poussoir est pressé
Code Arduino minimal en configuration pull-down
// Constante (la valeur ne peut pas changer au cours de l’exécution du programme): const int buttonPin = 2; // numéro de la pin du bouton poussoir // variables (la valeur peut changer au cours de l’exécution du programme): int buttonState = 0; // variable pour lire le status du bouton poussoir void setup() { // initialise la pin du bouton poussoir en entrée pinMode(buttonPin, INPUT); } void loop() { // lecture de l'état du bouton poussoir et stock son état dans la variable // Si le bouton poussoir est relaché buttonState=0 // Si le bouton poussoir est pressé buttonState=1 buttonState = digitalRead(buttonPin); // Placer à cet endroit du programme un test sur la variable buttonState et effectuer une action (allumer une LED par exemple) }