Raspberry Pi - Bouton - Anti-rebond
Lorsqu'un bouton est pressé ou relâché, ou lorsqu'un interrupteur est basculé, les débutants supposent souvent que son état change simplement de BAS à HAUT ou de HAUT à BAS. En réalité, ce n'est pas le cas. En raison des caractéristiques mécaniques et physiques, l'état du bouton (ou interrupteur) peut être basculé entre BAS et HAUT plusieurs fois. Ce phénomène est connu sous le nom de rebond. Le rebond peut faire en sorte qu'une seule pression soit lue comme plusieurs pressions, ce qui entraîne un dysfonctionnement dans certaines applications.
La méthode pour prévenir ce problème est appelée débogage ou debounce. Ce tutoriel vous explique comment le faire lors de l'utilisation du bouton avec un Raspberry Pi. Nous apprendrons à travers les étapes ci-dessous :
- Code Raspberry Pi sans anti-rebond pour un bouton.
- Code Raspberry Pi avec anti-rebond pour un bouton.
- Code Raspberry Pi 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, y compris leurs broches, leur fonctionnement et leur programmation, les tutoriels suivants peuvent vous fournir plus d'informations :
Diagramme de câblage
This image is created using Fritzing. Click to enlarge image
Jetons un coup d'œil aux différences entre le code Raspberry Pi AVEC et SANS anti-rebond, ainsi qu'à leurs comportements respectifs.
Bouton de lecture sans anti-rebond
Avant de comprendre le débouncing, regardez le code sans celui-ci et observez son comportement.
Étapes rapides
- Assurez-vous d'avoir installé Raspbian ou tout autre système d'exploitation compatible avec le Raspberry Pi sur votre Pi.
- Assurez-vous que votre Raspberry Pi est connecté au même réseau local que votre PC.
- Assurez-vous que votre Raspberry Pi est connecté à Internet si vous avez besoin d'installer des bibliothèques.
- Si c'est la première fois que vous utilisez un Raspberry Pi, consultez Installation du logiciel - Raspberry Pi..
- Connectez votre PC au Raspberry Pi via SSH en utilisant le client SSH intégré sur Linux et macOS ou PuTTY sur Windows. Consultez comment connecter votre PC au Raspberry Pi via SSH.
- Assurez-vous d'avoir la bibliothèque RPi.GPIO installée. Sinon, installez-la en utilisant la commande suivante :
- Créez un fichier de script Python button_without_debounce.py et ajoutez le code suivant :
- Enregistrez le fichier et exécutez le script Python en exécutant la commande suivante dans le terminal :
Le script s'exécute en boucle infinie jusqu'à ce que vous appuyiez sur Ctrl + C dans le terminal.
- Maintenez le bouton enfoncé pendant quelques secondes, puis relâchez-le.
- Consultez le résultat dans le Terminal.
Parfois, vous avez seulement appuyé et relâché le bouton une fois. Néanmoins, le Raspberry Pi le reconnaît comme des pressions et des relâchements multiples. C'est le phénomène de rebond mentionné au début du tutoriel. Voyons comment le résoudre dans la prochaine partie.
Bouton de lecture avec anti-rebond
Étapes rapides
- Créez un fichier de script Python button_debounce.py et ajoutez le code suivant :
- Enregistrez le fichier et exécutez le script Python en exécutant la commande suivante dans le terminal :
- Appuyez et maintenez le bouton enfoncé pendant quelques secondes, puis relâchez-le.
- Vérifiez le terminal pour les résultats.
Comme vous pouvez le constater, vous avez uniquement appuyé et relâché le bouton une seule fois. Le Raspberry Pi le détecte comme une seule pression et un seul relâchement, éliminant ainsi tout bruit inutile.
Bouton Raspberry Pi anti-rebond pour plusieurs boutons
Le diagramme qui illustre le câblage pour le code mentionné :
This image is created using Fritzing. Click to enlarge image
Pour simplifier et organiser votre câblage, nous vous recommandons d'utiliser un Screw Terminal Block Shield pour Raspberry Pi. Ce shield garantit des connexions plus sûres et plus faciles à gérer, comme illustré ci-dessous :