banner

Blog

Sep 17, 2023

Comment utiliser les boutons-poussoirs avec les broches GPIO du Raspberry Pi

Si vous avez déjà utilisé une LED avec un Raspberry Pi, vous savez probablement comment fonctionnent les sorties GPIO. Le code fait circuler l'électricité à travers les broches d'entrée/sortie à usage général (GPIO), passe à travers les LED et allume les choses. Mais avez-vous déjà essayé de faire l'inverse ? Avec les boutons-poussoirs, vous pouvez faire exactement le contraire. Ce tutoriel vous montre comment transformer une broche GPIO en une broche d'entrée, en écoutant chaque pression de bouton que vous faites !

Un bouton-poussoir est un type d'interrupteur. Il a deux broches conductrices séparées qui empêchent un circuit complet en étant séparées l'une de l'autre. Lorsque vous appuyez sur un bouton-poussoir, vous poussez en fait les deux broches ensemble, complétant ainsi le circuit. Mais si vous lâchez prise, il y a un mécanisme semblable à un ressort qui sépare à nouveau les broches.

Le bouton-poussoir typique des kits de capteurs comporte quatre broches, chaque broche étant séparée des autres. Une plaque métallique mobile se trouve juste en dessous de la zone du bouton, qui descend et relie toutes les autres broches lorsque le bouton-poussoir est enfoncé vers le bas.

Vous trouverez deux plaques à l'intérieur d'un bouton-poussoir à 4 broches. Chacun est connecté à deux broches externes. Les deux plaques sont maintenues séparées l'une de l'autre et ne peuvent être connectées qu'en appuyant sur une troisième plaque - la plaque métallique sous le bouton.

D'une certaine manière, il y a toujours deux broches connectées dans un bouton-poussoir. Lorsque vous appuyez sur le bouton-poussoir à 4 broches, vous connectez les quatre broches ensemble.

Cette fois, nous faisons en sorte que les broches GPIO du Raspberry Pi détectent une pression sur un bouton à partir d'un bouton-poussoir. Lorsque l'électricité le traverse, le Raspberry Pi imprime un message vous indiquant qu'il fonctionne.

Conseil: Pour trouver le bon numéro de broche, tenez votre Raspberry Pi de manière à ce que les broches GPIO se trouvent dans le coin supérieur droit. La broche en haut à gauche est la broche 1, et à sa droite se trouve la broche 2. En dessous de la broche 1 se trouve la broche 3, à droite se trouve la broche 4, et ainsi de suite.

Si vous inversez les broches GND et 3,3 V, avec 3,3 V sur la résistance et GND de l'autre côté du bouton-poussoir, vous inverserez la logique du bouton-poussoir. Il affichera la broche 7 est HIGH! tout le temps et devient la broche 7 est BAS lorsque vous appuyez sur le bouton.

Les boutons-poussoirs utilisent deux types de résistances : pull-up et pull-down. Celui avec 3,3 V connecté à la résistance est une résistance pull-up. Il tire la tension vers le haut. Pendant ce temps, les résistances pull-down réduisent la tension en ayant une broche GND qui leur est connectée.

Vous pouvez toujours utiliser un bouton-poussoir sans résistance, mais cela laisse votre broche GPIO flottante. Une broche GPIO flottante ne reçoit aucune charge électrique directe, elle recherche donc des charges dans son environnement. S'il y a un fort champ électromagnétique à proximité, par exemple, il le mesurera simplement à la place.

C'est pourquoi vous avez besoin d'un point de référence. Si vous raccordez la broche GPIO à 0V (GND) par défaut, elle mesurera 0V tant que le bouton n'est pas enfoncé. Mais si vous ne le faites pas, la valeur de la broche GPIO peut être n'importe où - même des volts négatifs !

Les épingles flottantes peuvent cependant faire des choses intéressantes. Si vous laissez une broche flottante, elle peut détecter la différence de tension dans l'air, mesurant même l'effet du mouvement de votre doigt près de la broche elle-même. C'est comme un capteur de présence électromagnétique ou quelque chose comme ça.

C'est dommage que vous ne puissiez pas le faire sur le Raspberry Pi, cependant. Pour que cela soit utile, vous aurez besoin de broches analogiques, et le Raspberry Pi n'en a pas.

Sachant cela, vous devez comprendre que la broche 7 détecte si 3,3 V ou 0 V la traverse. S'il détecte 3,3 V, il se signale comme ÉLEVÉ. Mais s'il détecte 0V, alors il est BAS.

Divisons le code en trois parties : les commandes d'importation, les commandes de configuration et les commandes en boucle.

Nous utilisons deux commandes d'importation :

importer RPi.GPIO en tant que GPIO importe le module RPi.GPIO, qui vous permet de faire des choses avec les broches GPIO de votre Raspberry Pi. En ajoutant as GPIO à la fin, vous dites à Python de dire que taper GPIO équivaut à taper RPi.GPIO. Vous pouvez même le remplacer par d'autres chaînes, et le code devrait toujours fonctionner tant que vous le formatez correctement.

D'autre part, à partir de time import sleep n'importe qu'une partie du module time de Python. Il vous permet d'utiliser la fonction sleep().

Nous travaillons avec les trois commandes du module RPi.GPIO sur les commandes de configuration pour corriger certains paramètres.

Le module RPi.GPIO affiche normalement un message qui vous avertit de l'utilisation des broches GPIO dès que vous démarrez le script Python. GPIO.setwarnings(False) empêche que cela se produise.

GPIO.setmode(GPIO.BOARD) est une autre commande du module RPi.GPIO. Il indique à Python que vous utilisez le brochage "BOARD". Il existe deux types de brochage dans RPi.GPIO : BOARD et BCM. BOARD vous permet de choisir des épingles en utilisant les numéros d'épingle. BCM (abréviation de "Broadcom") vous permet de sélectionner des broches avec leur canal SOC Broadcom individuel. BOARD est beaucoup plus facile à utiliser, car c'est toujours le même quel que soit le type de carte Raspberry Pi que vous utilisez. Le brochage du BCM peut changer en fonction du modèle que vous utilisez.

Enfin, GPIO.setup(7, GPIO.IN) vous permet de définir la broche 7 comme broche d'entrée. Il utilise la fonction .setup() et lit 7 comme broche que vous essayez de choisir. GPIO.IN signifie que vous essayez de le définir comme broche d'entrée.

Les systèmes embarqués n'utilisent normalement que quelques lignes de code et les bouclent indéfiniment. Différents langages de programmation utilisent différentes façons de le faire. Mais le concept est le même : ils utilisent une sorte de boucle. Pour Python, c'est tant que True :.

while True : vous permet de boucler le code indéfiniment. Tout ce que vous y placerez fonctionnera indéfiniment tant qu'il y aura de l'électricité sur le tableau.

if GPIO.input(7) == GPIO.HIGH : est une instruction if. Il dit que si la broche 7, qui est une broche d'entrée, se lit comme HIGH, alors elle devrait faire tout ce qu'elle contient.

print("Pin 7 is HIGH!") est à l'intérieur d'une instruction if. Tout ce qu'il fait est d'imprimer la broche 7 est HAUTE ! sur la console. Vous pouvez le remplacer par n'importe quelle chaîne, nombre ou variable qui les contient.

Vient ensuite elif GPIO.input(7) == GPIO.LOW :. C'est fondamentalement la même chose que si GPIO.input(7) == GPIO.HIGH : sauf pour la première partie : il utilise elif au lieu de if. Le code elif signifie Else If. Ce qu'il dit, c'est que si tous les autres codes ci-dessus renvoient false, alors Python doit exécuter cette instruction else-if.

Enfin, sleep(0.15) interrompt le code pendant 0,15 secondes. Pourquoi mettre le code en pause ? C'est surtout pour des problèmes de performances. Le Raspberry Pi enverra le code de sortie si rapidement qu'il retardera un peu votre interface graphique. C'est encore plus prononcé si vous utilisez votre Raspberry Pi via SSH. Il y aura un retard notable qui ne fera qu'empirer avec le temps. Mettre le code en pause le ralentit pour éviter les problèmes de performances.

L'échange à chaud ou le remplacement des broches du Raspberry Pi lorsqu'il est sous tension est généralement une mauvaise idée. Il est toujours plus sûr de le retirer de l'alimentation avant de le changer.

Du point de vue de l'utilité, ils sont fondamentalement les mêmes. Mais le fait d'avoir quatre broches vous permet de câbler le bouton-poussoir à 4 broches à un autre bouton-poussoir dans un circuit en série.

Le Raspberry Pi peut avoir 40 broches, mais seulement 27 d'entre elles sont GPIO. Vous ne pouvez programmer que les broches GPIO dans les broches d'entrée et de sortie. La plupart des IDE ne vous permettent pas de reprogrammer une broche non GPIO dans une broche d'entrée.

Toutes les photos et captures d'écran par Terenz Jomar Dela Cruz

Terenz est un roboticien amateur qui essaie de construire le robot le plus impressionnant que le monde ait jamais vu. Il aurait déjà pu le faire s'il n'était pas si occupé à brûler des LED comme deuxième passe-temps.

Nos derniers tutoriels livrés directement dans votre boîte de réception

Asana vs Trello : faut-il migrer de l'un à l'autre ?

Passer d'Evernote à Notion ? Comment bien faire les choses

Comment créer une carte mentale dans Microsoft Word, PowerPoint et Excel

Comment réparer la vitesse Ethernet plafonnée à 100 Mbps sous Windows

5 façons de savoir qui vous a supprimé ou bloqué sur Facebook

Pourquoi mon téléviseur ne dit-il aucun signal ? Un guide de dépannage rapide

Les photos Facebook ne se chargent pas ? Voici les correctifs

Comment convertir le BIOS hérité en UEFI sous Windows

Divulgation d'affiliation :Make Tech Easier peut gagner une commission sur les produits achetés via nos liens, ce qui soutient le travail que nous faisons pour nos lecteurs.

Conseil : Divulgation des affiliés :
PARTAGER