bouton-gpio.py
Un bouton sur le connecteur GPIO déclenche une action à l'appui et au relâchement. gpiozero fournit les callbacks when_pressed/when_released avec anti-rebond intégré et le pause() événementiel.
Matériel requis
Un Compute Module 5 (BCM2712 + RP1) sur une CM5 IO Board, alimenté en 5 V USB-C (jusqu'à 25 W en PD), sous Raspberry Pi OS Bookworm. 1 bouton poussoir (une patte sur la broche GPIO, l'autre sur GND).
Branchement
Bouton entre la broche physique 7 (GPIO4) et GND ; la résistance de tirage est interne (pull_up=True).
Fonctionnement
Le niveau de la broche est surveillé ; un front valide (stabilisé 30 ms) appelle l'action. gpiozero délègue le tout à des callbacks asynchrones. Sous Bookworm : sudo apt install python3-gpiozero puis python3 votre_script.py. Les 28 GPIO du connecteur reprennent la numérotation BCM du Pi 5 ; le module a un bouton PWR_BUT et un RTC (VBAT).
Pour aller plus loin
Compteur d'appuis, double-clic (mesure d'intervalle), ou déclenchement d'un script shell via 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