bouton-gpio.py
Un botón en el conector GPIO dispara una acción al pulsar y al soltar. gpiozero ofrece los callbacks when_pressed/when_released con antirrebote integrado y pause() orientado a eventos.
Hardware necesario
Un Compute Module 3/3 Lite (BCM2837) en una Compute Module IO Board v3, alimentada a 5 V, con Raspberry Pi OS (Bullseye) en tarjeta SD o eMMC. 1 botón pulsador (una pata al pin GPIO, la otra a GND).
Cableado
Botón entre el pin físico 7 (GPIO4) y GND; la resistencia de tirada es interna (pull_up=True).
Funcionamiento
Se vigila el nivel del pin; un flanco válido (estable 30 ms) ejecuta la acción. gpiozero delega todo en callbacks asíncronos. En Bullseye: sudo apt install python3-gpiozero y ejecute python3 su_script.py. Los pines siguen la numeración BCM (GPIO17, GPIO18…) que expone la IO Board.
Para ir más lejos
Contador de pulsaciones, doble clic (medida de intervalo) o lanzamiento de un script shell vía subprocess.
bouton-gpio.py
#!/usr/bin/env python3
# Bouton poussoir avec gpiozero : reaction sur appui et relachement.
from gpiozero import Button, LED
from signal import pause
bouton = Button(4, pull_up=True, bounce_time=0.05) # GPIO4, broche 7
led = LED(17)
def sur_appui():
print("Appui !")
led.on()
def sur_relachement():
print("Relache.")
led.off()
bouton.when_pressed = sur_appui
bouton.when_released = sur_relachement
print("Pret : Ctrl-C pour quitter")
pause() # laisse tourner les callbacks en tache de fond