Arduino Nano - Bouton
Ce didacticiel vous apprend à utiliser un Arduino Nano avec un bouton. En détail, nous allons apprendre :
- Comment connecter le bouton à l'Arduino Nano
- Comment programmer l'Arduino Nano pour lire l'état du bouton
- Comment programmer l'Arduino Nano pour détecter les événements d'appui et de relâchement du bouton
- Comment éviter le problème d'entrée flottante lors de l'utilisation du bouton avec l'Arduino Nano
- Comment prévenir le problème de rebondissement lors de l'utilisation du bouton avec l'Arduino Nano.
Le bouton est désigné sous le nom de bouton-poussoir, bouton tactile ou interrupteur momentané. C'est un composant fondamental et est fréquemment utilisé dans les projets Arduino. Son utilisation est simple. Cependant, il peut prêter à confusion pour les débutants en raison des aspects mécaniques, physiques et des différentes manières dont il peut être utilisé. Ce tutoriel simplifie les choses pour les débutants.
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
Les débutants rencontrent généralement deux difficultés courantes lors de l'utilisation d'un bouton :
1. Problème d'entrée flottante :
- Symptôme : La valeur lue sur la broche d'entrée ne correspond pas à l'état du bouton pressé.
- Cause : La broche d'entrée n'utilise pas de résistance de tirage vers le haut ou vers le bas.
- Solution : Utilisez une résistance de tirage vers le haut ou vers le bas, et les étapes pour ce faire seront expliquées dans ce tutoriel.
2. Phénomène de battement:
- Symptôme : Bien que le bouton soit pressé une seule fois, le code Arduino détecte plusieurs pressions.
- Cause : Les problèmes mécaniques et physiques entraînent un basculement rapide de l'état du bouton (ou interrupteur) entre BAS et HAUT à plusieurs reprises.
- Solution : Pour résoudre ce problème, des techniques de debounce seront abordées dans le tutoriel Arduino Nano - Bouton - Debounce
Seules les applications nécessitant une détection précise du nombre de pressions devraient prendre cela en considération.
※ NOTE THAT:
Ne confondez pas le bouton avec les éléments suivants :
Le schéma des broches du bouton
Le bouton-poussoir, également appelé bouton tactile ou interrupteur momentané, est un type d'interrupteur qui se ferme lorsque le bouton est pressé et maintenu, et s'ouvre lorsqu'il est relâché. Il existe divers types de boutons-poussoirs, qui peuvent être largement catégorisés en deux groupes :
- Bouton-poussoir monté sur PCB (adapté pour montage sur plaque d'essai)
- Bouton-poussoir monté sur panneau
Un bouton monté sur PCB a généralement quatre broches.
Néanmoins, ces broches sont reliées ensemble par paires. Par conséquent, seulement deux des quatre broches doivent être utilisées, lesquelles ne sont pas connectées en interne.
Il existe quatre manières possibles de se connecter au bouton, dont deux sont symétriques (comme le montre l'image).
Pourquoi seulement deux broches d'un bouton sont-elles utilisées, alors qu'il en a quatre ?
Pour garantir qu'il est solidement monté sur le PCB (carte de circuit imprimé) et peut résister à toute force de pression.
Un bouton monté sur panneau a généralement deux broches.
Comment ça fonctionne
- Lorsque le bouton n'est pas pressé, la broche A et la broche B ne sont pas connectées.
- Cependant, lorsque le bouton est pressé, la broche A et la broche B deviennent connectées.
Arduino Nano - Bouton
Le pin d'un bouton est connecté soit à VCC, soit à GND. L'autre pin du même bouton est connecté à une broche sur une carte Arduino Nano. En examinant l'état d'une broche de l'Arduino Nano configurée en entrée, nous pouvons déterminer si un bouton a été pressé ou non.
État du bouton et état de pression
La connexion entre le bouton et l'Arduino Nano, ainsi que la configuration de la broche de l'Arduino, détermineront la relation entre l'état du bouton et l'état de pression.
Il y a deux manières d'utiliser un bouton avec Arduino :
- I. La broche d'un bouton est connectée à VCC, l'autre est connectée à une broche d'Arduino avec une résistance de tirage vers le bas.
- Lorsque le bouton est pressé, l'état de la broche de l'Arduino sera HAUT. Sinon, l'état de la broche de l'Arduino sera BAS.
- Une résistance externe est nécessaire dans ce cas.
- I. La broche d'un bouton est connectée à GND, l'autre est connectée à une broche d'Arduino avec une résistance de tirage vers le haut.
- Lorsque le bouton est pressé, l'état de la broche de l'Arduino sera BAS. Sinon, l'état de la broche de l'Arduino sera HAUT.
- Nous pouvons utiliser une résistance interne ou externe. La résistance interne est déjà intégrée dans l'Arduino Nano, et peut être configurée via le code Arduino Nano.
- Si nous n'utilisons PAS de résistance de tirage externe vers le bas ou vers le haut, l'état de la broche d'entrée est « flottant » lorsque le bouton n'est PAS pressé. Cela signifie que l'état peut être HAUT ou BAS (instable, non fixé), entraînant une détection incorrecte.
- La pire pratique : initialise la broche Arduino comme une entrée (pinMode(BUTTON_PIN, INPUT)) sans utiliser de résistances de tirage vers le bas ou vers le haut externes.
- La meilleure pratique : initialise la broche Arduino comme une entrée à tirage vers le haut interne (en utilisant pinMode(BUTTON_PIN, INPUT_PULLUP)). Elle n'a pas besoin d'utiliser de résistance de tirage vers le bas ou vers le haut externe.
※ NOTE THAT:
Pour simplifier les choses pour les débutants, ce tutoriel utilise l'approche la plus directe : initialiser la broche de l'Arduino Nano comme une entrée à pull-up interne sans nécessiter de résistance externe. Il n'est pas nécessaire que les débutants s'inquiètent de la manière de connecter la résistance de pull-up/pull-down. Ils doivent simplement utiliser le code Arduino Nano.
Diagramme de câblage
- Schéma de câblage entre Arduino Nano et bouton monté sur PCB
This image is created using Fritzing. Click to enlarge image
- Schéma de câblage entre Arduino Nano et bouton monté sur panneau
This image is created using Fritzing. Click to enlarge image
Comment programmer un bouton
- Utilisez la fonction pinMode() pour configurer la broche de l'Arduino Nano en tant qu'entrée avec pull-up interne.
- Par exemple, la broche 2 :
- Utilise la fonction digitalRead() pour déterminer l'état de la broche de l'Arduino Nano.
※ NOTE THAT:
Deux cas d'utilisation courants existent :
- Le premier : Si l'état d'entrée est HAUT, effectuer une action. Si l'état d'entrée est BAS, prendre l'action opposée.
- Le deuxième : Si l'état d'entrée passe de BAS à HAUT (ou de HAUT à BAS), faire quelque chose.
Nous sélectionnons l'un de ces cas en fonction de l'application. Par exemple, lorsqu'on utilise un bouton pour contrôler une LED :
- Si nous voulons que la LED soit ALLUMÉE lorsque le bouton est pressé et ÉTEINTE lorsque le bouton n'est PAS pressé, nous DEVONS utiliser le premier cas d'utilisation.
- Si nous voulons que la LED soit basculée entre ALLUMÉ et ÉTEINT à chaque fois que nous appuyons sur le bouton, nous DEVONS utiliser le deuxième cas d'utilisation.
Comment détecter le changement d'état de BAS à HAUT
Code Arduino Nano
Étapes rapides
- Connectez votre Arduino Nano à un ordinateur à l'aide d'un câble USB.
- Lancez l'IDE Arduino, sélectionnez la carte et le port corrects.
- Copiez le code ci-dessous et ouvrez-le dans 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.
- Appuyez et relâchez plusieurs fois le bouton.
- Consultez les résultats affichés sur le moniteur série.
1 est ÉLEVÉ, 0 est BAS.
Explication du code
Découvrez l'explication ligne par ligne contenue dans les commentaires du code source !
Modifier le code Arduino Nano
Modifions le code afin qu'il puisse reconnaître les événements d'appui et de relâchement.
Étapes rapides
- Modifiez le code comme suit :
- Cliquez sur le bouton Upload dans l'IDE Arduino pour compiler et téléverser le code vers la carte Arduino Nano.
- Ouvrez le moniteur série.
- Appuyez sur le bouton et maintenez-le enfoncé.
- Relâchez le bouton et observez le résultat dans le moniteur série.
※ NOTE THAT:
Même si vous appuyez et relâchez le bouton une seule fois, l'affichage dans le moniteur série peut indiquer plusieurs événements de pression et de relâchement. C'est le comportement typique du bouton et est connu sous le nom de "phénomène de rebond". Pour résoudre ce problème, veuillez consulter le tutoriel Arduino Nano - Antirebond de bouton.
※ NOTE THAT:
Nous avons développé une bibliothèque, ezButton, pour simplifier le processus pour ceux qui débutent, en particulier lorsqu'ils traitent plusieurs boutons. Vous pouvez en savoir plus sur la bibliothèque ezButton ici.
Vidéo
Défiez-vous
- Lorsque le bouton est pressé, la LED sera allumée.
- Lorsque le bouton n'est pas pressé, la LED sera éteinte.
- Chaque fois que le bouton est pressé, la LED basculera entre ON et OFF.
Connaissances supplémentaires
Quelles sont les occasions où il est approprié d'utiliser une résistance de tirage vers le haut ou vers le bas pour une broche d'entrée ? Quels sont les moments où il n'est pas adapté d'utiliser une résistance de tirage vers le haut ou vers le bas pour une broche d'entrée ?
- Si le capteur possède des états fermé ou ouvert, une résistance de rappel ou de tirage est nécessaire pour qu'ils deviennent BAS et HAUT. Des exemples de tels capteurs incluent le bouton-poussoir, l'interrupteur et l'interrupteur à contact magnétique (capteur de porte).
- D'autre part, si le capteur a deux niveaux de tension définis (BAS et HAUT), aucune résistance de rappel ou de tirage n'est requise. Des exemples de tels capteurs sont le capteur de mouvement et le capteur tactile.