button_led.py
Un bouton entre GPIO27 et la masse pilote une LED sur GPIO17 : les callbacks when_pressed/when_released de gpiozero évitent le polling. Le rebond est filtré avec bounce_time=0,05 s. Bon point de départ pour une interface locale, en tenant compte du brochage 40 broches de la carte.
Matériel requis
Une Raspberry Pi 5 (BCM2712 quad-core 2,4 GHz, puce I/O RP1, GPIO 40 broches, alimentation USB-C 5 V/5 A recommandée, deux ports caméra CSI). Un bouton poussoir, une LED, une résistance 330 ohms, des fils dupont.
Câblage
Une patte du bouton sur GPIO27 (broche 13), l'autre sur GND ; la résistance de pull-up est interne (pull_up=True). LED côté GPIO17.
Fonctionnement
gpiozero active le pull-up interne ; l'appui relie la broche à GND et déclenche le callback. pause() laisse tourner la boucle d'événements.
Exécution
Copiez le script sur la carte (scp), puis lancez-le avec python3. Sous Bookworm, gpiozero 2.x pilote les broches via la puce RP1 ; gardez gpiozero et python3-rpi.gpio à jour (sudo apt full-upgrade). Alimentation 5 V/5 A conseillée.
Variantes
btn.wait_for_press() pour du bloquant ; hold_time pour détecter un appui long. Vérifiez la broche sur le schéma officiel J8.
button_led.py
# button_led.py — allume une LED quand on appuie sur un bouton.
# Deps: sudo apt install python3-gpiozero
# Cablage : bouton entre GPIO27 et GND, pas de resistance externe (pull-up interne).
from gpiozero import LED, Button
from signal import pause
led = LED(17) # GPIO17, broche 11
btn = Button(27, pull_up=True, bounce_time=0.05) # GPIO27, broche 13
def on_press():
print("Bouton presse")
led.on()
def on_release():
led.off()
btn.when_pressed = on_press
btn.when_released = on_release
print("Appuyez sur le bouton, Ctrl+C pour sortir")
pause()