button_led.py

Raspberry Pi 4 Model B (2019) — Fiche carte · Fichier : button_led.py · Langage : Python · Usage : Lire un bouton poussoir et réagir par événement (callback gpiozero)

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 4 Model B (BCM2711 quad-core 1,5 GHz, USB-C 5 V/3 A, double micro-HDMI, Wi-Fi 5 GHz, GPIO 40 broches). 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 (ou bash). Raspberry Pi OS Bookworm inclut gpiozero ; sinon sudo apt install python3-gpiozero. Utilisez une alimentation USB-C 5 V/3 A pour éviter les bridages.

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()

← Retour à la fiche