Arduino - Bouton - Anti-rebond
Lorsqu'un bouton est pressé/relâché ou qu'un interrupteur est basculé, les débutants pensent généralement que son état change simplement de LOW à HIGH ou de HIGH à LOW. En pratique, ce n'est pas exactement le cas. En raison des caractéristiques mécaniques et physiques, l'état du bouton (ou de l'interrupteur) peut osciller plusieurs fois entre LOW et HIGH. Ce phénomène est appelé rebond. Le phénomène de rebond fait qu'une simple pression peut être lue comme des pressions multiples, entraînant un dysfonctionnement dans certains types d'applications. Ce tutoriel montre comment éliminer ce phénomène (appelé anti-rebond sur l'entrée).
Préparation du matériel
Or you can buy the following sensor kits:
1 | × | DIYables Sensor Kit (30 sensors/displays) | |
1 | × | DIYables Sensor Kit (18 sensors/displays) |
Diagramme de câblage
This image is created using Fritzing. Click to enlarge image
Voyons et comparons le code Arduino sans et avec anti-rebond ainsi que leurs comportements.
Bouton de lecture sans anti-rebond
Avant d'apprendre le debounce, observez simplement le code sans debounce et son comportement.
Étapes rapides
- Connectez l'Arduino au PC via le câble USB
- Ouvrez l'IDE Arduino, sélectionnez la bonne carte et le bon port
- Copiez le code ci-dessous et ouvrez-le avec l'IDE Arduino
- Cliquez sur le bouton Upload de l'IDE Arduino pour téléverser le code vers Arduino.
- Ouvrez le moniteur série
- Continuez à appuyer sur le bouton plusieurs secondes puis relâchez-le.
- Voir le résultat sur le moniteur série
⇒ Comme vous pouvez le voir, vous avez appuyé et relâché le bouton une seule fois. Cependant, Arduino le reconnaît comme plusieurs pressions et relâchements.
Lire un Bouton avec Anti-rebond
Étapes rapides
- Copiez le code ci-dessous et ouvrez-le avec l'IDE Arduino.
- Cliquez sur le bouton Upload dans l’IDE Arduino pour charger le code sur l’Arduino
- Ouvrez le moniteur série
- Continuez à appuyer sur le bouton plusieurs secondes puis relâchez-le.
- Consultez le résultat sur le moniteur série
⇒ Comme vous pouvez le voir, vous avez appuyé et relâché le bouton une seule fois. Arduino le reconnaît comme une pression et relâchement unique. Les parasites sont éliminés.
Nous l'avons simplifié - Code de rebond de bouton Arduino avec bibliothèque
Pour faciliter la tâche aux débutants, notamment lors de l'utilisation de plusieurs boutons, nous avons créé une bibliothèque appelée ezButton. Vous pouvez en savoir plus sur la bibliothèque ezButton ici.
Code Arduino de Debounce pour un seul bouton
Code de Debounce de Bouton Arduino pour Plusieurs Boutons
Le schéma de câblage pour le code ci-dessus :
This image is created using Fritzing. Click to enlarge image
Vidéo
Connaissances supplémentaires
- La valeur DEBOUNCE_DELAY dépend des applications. Différentes applications peuvent utiliser différentes valeurs.
Extensibilité
La méthode de debounce peut être appliquée pour des interrupteurs, des capteurs tactiles...