🛠 Bouton poussoir et retour sur la console
Objectifs
- Lire un état logique (0/1) sur une broche GPIO avec un bouton poussoir.
- Utiliser la résistance de pull-up interne plutôt qu'une résistance externe.
- Afficher l'état du bouton sur la console — utile sur le Model A dont la seule console peut être l'UART des broches GPIO.
Matériel
- Raspberry Pi Model A sous Raspberry Pi OS legacy 32 bits.
- 1 bouton poussoir (aucune résistance externe nécessaire).
- Console série USB-TTL sur GPIO14/15 (enable_uart=1 dans config.txt) ou clavier USB via un hub.
Code complet
# Lecture événementielle avec gpiomon (libgpiod)
sudo gpiomon --rising-edge --num-events=0 gpiochip0 4
# Version Python avec la bibliothèque héritée RPi.GPIO
python3 - <<'PY'
import RPi.GPIO as GPIO, time
GPIO.setmode(GPIO.BCM)
GPIO.setup(4, GPIO.IN, pull_up_down=GPIO.PUD_UP)
try:
while True:
print("bouton:", "APPUYE" if not GPIO.input(4) else "libre", flush=True)
time.sleep(0.05)
finally:
GPIO.cleanup
PY
Vérification attendue
Chaque appui affiche un événement rise (gpiomon) ou « bouton: APPUYE » puis « libre » à l'interruption. Le montage est actif-bas : au repos, l'entrée est tirée au 3,3 V par le pull-up interne.
Erreurs fréquentes
- Oublier
pull_up_down=GPIO.PUD_UP: l'entrée flotte et affiche des états aléatoires. - Se tromper de broche : broche physique 7 = GPIO4, pas GPIO7.
- Brancher le bouton entre GPIO et 3,3 V en supposant un pull-down : il n'existe pas par défaut.
gpiomonsanssudosur les images legacy : permission refusée sur /dev/gpiochip0.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
led_blink.pyPythonbutton_led.pyPythonservo_sweep.pyPythondht_temp.pyPythonoled_i2c.pyPythonmcp3008_read.pyPython