🛠 GPIO en Python : LED et bouton avec gpiozero

Raspberry Pi Zero 2 W (2021) — Ficha de placa · intermediaire · Schéma : IMG-zero-2w-intermediaire-1-led-bouton-gpiozero.svg — connecteur 40 broches de la Zero 2 W, LED + 330 Ω sur la broche physique 11 (GPIO17), bouton sur la broche 13 (GPIO27) vers GND.

Objetivos

Controlar el conector de 40 pines compatible con HAT de la Zero 2 W: lógica a 3,3 V (¡atención, no 5 V!), numeración Broadcom (GPIO17 = pin físico 11), entradas con resistencia pull-up interna y el modelo orientado a eventos de gpiozero —preinstalado en Raspberry Pi OS— que evita el polling bloqueante. Restricciones de corriente a tener en cuenta: 16 mA por pin, 50 mA en TOTAL en todos los pines.

Material

Código completo

#!/usr/bin/env python3
"""LED sur GPIO17, compteur d'appuis sur bouton GPIO27 (gpiozero).
Rappel : 16 mA max par broche, 50 mA au total sur toutes les broches."""
from gpiozero import LED, Button
from signal import signal, SIGINT, default_int_handler

led = LED(17)                       # numérotation BCM, pas numéro de broche !
button = Button(27, pull_up=True)   # au repos = HIGH ; appuyé = relié à GND

presses = 0
def on_press(_):
    global presses
    presses += 1
    print(f"Bouton appuyé {presses} fois")

button.when_pressed = on_press      # événementiel, pas de boucle de polling

signal(SIGINT, default_int_handler) # Ctrl-C propre au lieu de rester bloqué
try:
    led.blink(on_time=0.5, off_time=0.5)   # non bloquant : thread en arrière-plan
    while True:
        pass
finally:
    led.close                     # remet la broche à 0 à la sortie

Ejecución: « python3 bouton.py », parada mediante Ctrl-C. Para iniciarlo al arrancar: un servicio systemd simple con « ExecStart=/usr/bin/python3 /home/pi/bouton.py ».

Verificación esperada

El LED parpadea a 1 Hz desde el inicio; cada pulsación muestra un contador en la terminal. Tras Ctrl-C, el LED se apaga (el pin se libera correctamente mediante led.close). Si no parpadea nada, verificar primero la inversión entre el pin físico y el número GPIO.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales