🛠 Lire un bouton et afficher les appuis dans la console
Objectifs
Compléter le premier montage par une entrée : câbler un bouton-poussoir sur GPIO27, activer la résistance de pull-up interne et afficher chaque appui dans la console avec gpiomon, sans aucun code à écrire.
Matériel
- Raspberry Pi Model B+ sous Raspberry Pi OS legacy 32 bits, connecté en Ethernet
- 1 bouton-poussoir (touches « push » 4 broches), fils Dupont
- Optionnel : résistance 10 kΩ si le pull-up interne n'est pas disponible
Code complet
# 1) Activer le pull-up interne de GPIO27 au démarrage
# (ligne firmware récente ; sinon câbler 10 kΩ entre GPIO27 et 3,3 V)
echo "gpio=27=pup" | sudo tee -a /boot/config.txt
sudo reboot
# 2) Écouter les 5 prochains appuis : passage 1 -> 0 (bord descendant)
sudo gpiomon --num-events=5 --falling-edge gpiochip0 27
# 3) Variante « compteur » : état instantané de la broche
while true; do sudo gpioget gpiochip0 27; sleep 0.2; done
Câblage : une patte du bouton sur la broche 13 (GPIO27), l'autre sur la broche 20 (GND). Sans appui, le pull-up maintient la broche à 1 ; l'appui la relie à 0.
Vérification attendue
Après le reboot, gpioinfo gpiochip0 indique la ligne 27 avec pull-up actif. gpiomon affiche une ligne d'événement par appui (« event: edge: falling edge ») et se termine après 5 appuis. gpioget renvoie 1 au repos, 0 maintenu.
Erreurs fréquentes
- Pull-up oublié : la broche « flotte », gpiomon déclenche en permanence ou jamais.
- Bouton câblé entre GPIO et 3,3 V sans pull-down : logique inversée, on guette le bord montant à la place.
- Rebonds mécaniques : plusieurs événements pour un seul appui — normal, on filtrera côté script.
- Mauvaise broche GND : le circuit ne se ferme pas, aucun appui détecté.
Autres tutoriels pour cette carte
- Allumer une LED depuis la GPIO 17 avec libgpiod
- Premier script Python : faire clignoter la LED
- Variation d'intensité d'une LED avec le PWM matériel (GPIO18)
- Interroger un capteur I2C (BME280) sur le bus du 40 broches
- Mettre le B+ en réseau par Ethernet et piloter en SSH
- Amorçage microSD, pannes de boot et procédure de recouvrement
Exemples de code pour cette carte
led_blink.pyPythonbutton_led.pyPythonservo_sweep.pyPythondht_temp.pyPythonoled_i2c.pyPythonmcp3008_read.pyPython