🛠 Bouton poussoir et messages dans la console
Objectifs
Lire un état logique sur une entrée GPIO et réagir dans la console. Tu vas câbler un bouton poussoir, activer la résistance de pull-up interne pour éviter le composant externe, puis scruter la broche en boucle pour afficher un message à chaque appui.
Matériel
- Raspberry Pi 2 Model B sous Raspberry Pi OS 32 bits
- 1 bouton poussoir
- Platine d'essai, 2 câbles jumper
- Broches : GPIO4 (broche 7 du J8) et GND (broche 9)
- Paquet gpiod installé (sudo apt install gpiod)
Code complet
#!/bin/bash
# bouton.sh — surveille GPIO4 (actif au niveau bas, pull-up interne)
CHIP=gpiochip0
while true; do
état=$(sudo gpioget --pull-up $CHIP 4)
if [ "$état" = "0" ]; then
echo "$(date +%T) : bouton appuye !"
while [ "$(sudo gpioget --pull-up $CHIP 4)" = "0" ]; do sleep 0.05; done
echo "$(date +%T) : bouton relache"
fi
sleep 0.05
done
Enregistre dans bouton.sh, puis : chmod +x bouton.sh && ./bouton.sh
Vérification attendue
Chaque appui affiche une ligne horodatée « bouton appuye ! » suivie de « bouton relache » au relâchement. Sans appui, la boucle reste silencieuse. Stoppe avec Ctrl+C.
Erreurs fréquentes
- Oublier le pull-up : sans lui, la broche flotte et affiche des états aléatoires ; l'option --pull-up (ou une résistance vers 3,3 V) est indispensable.
- Câbler GPIO4 vers 3,3 V au lieu de GND : il faut alors inverser la logique (actif au niveau haut).
- Confondre numéro de broche physique (7) et numéro GPIO (4) : on programme toujours en numéro GPIO.
- Spam de messages : le rebond mécanique du bouton provoque des doublons ; la temporisation de 50 ms après détection les filtre.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
led_blink.pyPythonbutton_led.pyPythonservo_sweep.pyPythondht_temp.pyPythonoled_i2c.pyPythonmcp3008_read.pyPython