Arduino Nano - Bouton - Anti-rebond
Lorsqu'un bouton est pressé ou relâché, ou qu'un interrupteur est basculé, les débutants supposent souvent que son état passe de LOW à HIGH ou de HIGH à LOW. En réalité, ce n'est pas toujours le cas. En raison des caractéristiques mécaniques et physiques, l'état du bouton (ou de l'interrupteur) peut être rapidement basculé plusieurs fois entre LOW et HIGH en réponse à un seul événement. Ce phénomène est connu sous le nom de rebond. Le rebond peut causer qu'une seule pression soit lue comme plusieurs pressions, entraînant un dysfonctionnement dans certaines applications.
La méthode pour éliminer ce problème est appelée anti-rebond ou debounce. Ce tutoriel vous explique comment procéder lorsque vous utilisez le bouton avec un Arduino Nano. Nous apprendrons à travers les étapes suivantes :
- Code Arduino Nano sans anti-rebond pour un bouton.
- Code Arduino Nano avec anti-rebond pour un bouton.
- Code Arduino Nano avec anti-rebond pour un bouton en utilisant la bibliothèque ezButton.
- Code Arduino Nano avec anti-rebond pour plusieurs boutons.
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) |
À propos du Bouton
Si vous n'êtes pas familier avec les boutons (brochage, fonctionnalités, programmation, etc.), les tutoriels suivants peuvent vous aider :
Diagramme de câblage
This image is created using Fritzing. Click to enlarge image
Observons et comparons le code Arduino Nano pour les versions AVEC et SANS anti-rebond, ainsi que leurs comportements respectifs.
Bouton de lecture sans anti-rebond
Avant de plonger dans le concept de l'anti-rebond, examinez le code sans anti-rebond et observez son comportement.
Étapes rapides
- Connectez un câble USB à l'Arduino Nano et à votre PC.
- Lancez l'Arduino IDE, choisissez la carte et le port appropriés.
- Copiez le code ci-dessous et ouvrez-le dans l'Arduino IDE.
- Cliquez sur le bouton Upload dans l'IDE Arduino pour compiler et téléverser le code sur la carte Arduino Nano.
- Ouvrez le moniteur série.
- Appuyez et maintenez le bouton pendant quelques secondes, puis relâchez-le.
- Essayez plusieurs fois.
- Consultez le résultat dans le moniteur série.
Parfois, vous n'avez appuyé et relâché le bouton qu'une seule fois. Néanmoins, l'Arduino Nano l'interprète comme de multiples pressions et relâchements. C'est le phénomène de rebond mentionné au début du tutoriel. Voyons comment y remédier dans la prochaine partie.
Bouton de lecture avec anti-rebond
Le code ci-dessous applique la méthode appelée « debounce » pour prévenir le phénomène de rebond.
Étapes rapides
- Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino.
- Cliquez sur le bouton Upload dans l'IDE Arduino pour compiler et téléverser le code vers l'Arduino Nano.
- Ouvrez le moniteur série.
- Continuez à appuyer sur le bouton pendant quelques secondes, puis relâchez-le.
- Consultez le résultat sur le moniteur série.
Comme vous pouvez le constater, vous avez appuyé et relâché le bouton une seule fois. L'Arduino Nano détecte cela comme une unique pression et relâchement. Le bruit est éliminé.
Nous l'avons simplifié - Code de Debounce de Bouton Arduino Nano avec Bibliothèque
Nous avons conçu une bibliothèque, ezButton, pour simplifier les choses pour ceux qui débutent, en particulier lorsqu'ils doivent gérer plusieurs boutons. Vous pouvez en savoir plus sur la bibliothèque ezButton ici.
Code Arduino Nano pour le Debouncing d'un Bouton Unique
Code de Debounce de Bouton pour Arduino Nano pour Plusieurs Boutons
Le schéma du code ci-dessus : L'illustration du câblage pour le code : La représentation visuelle du câblage pour le code :
This image is created using Fritzing. Click to enlarge image
Vidéo
Connaissances supplémentaires
- La valeur de DEBOUNCE_DELAY varie en fonction des caractéristiques physiques de chaque bouton. Il est possible que différents boutons utilisent des valeurs différentes.
Extensibilité
La technique de filtrage peut être utilisée avec un interrupteur, un capteur tactile, et plus encore.