🛠 Premier script Python : LED + bouton réunis
Objectifs
Écrire, rendre exécutable et lancer un premier script Python 3 qui combine les deux tutoriels précédents : le bouton allume la LED. Vous découvrirez gpiozero (préinstallé sur Raspberry Pi OS), la numérotation BCM, la gestion propre de Ctrl-C et le rôle du shebang.
Matériel
- Carte type Raspberry Pi 3 Model B+ sous Raspberry Pi OS (gpiozero préinstallé)
- LED + résistance 330 Ω sur GPIO17 (broche 11), bouton sur GPIO27 (broche 13) vers GND
- Un éditeur texte (nano) en SSH ou sur place
Code complet
#!/usr/bin/env python3
"""Bouton -> LED sur carte 40 broches (logique 3,3 V, pin <= 16 mA).
LED anode -> 330 ohm -> GPIO17 ; bouton -> GPIO27 -> GND."""
from gpiozero import LED, Button
from signal import signal, SIGINT, default_int_handler
led = LED(17) # numérotation BCM, comme pinout.xyz
button = Button(27, pull_up=True) # pull-up interne, appui vers GND
button.when_pressed = led.on # piloté par événement, pas de boucle active
button.when_released = led.off
signal(SIGINT, default_int_handler) # Ctrl-C nettoie l'état des broches
while True: # gpiozero fait tourner ses threads
pass
chmod +x bouton_led.py
./bouton_led.py # Ctrl-C pour quitter
Vérification attendue
Tant que le script tourne, appuyer sur le bouton allume la LED, la relâcher l'éteint — quasi instantanément (callback événementiel). Après Ctrl-C, la LED s'éteint proprement car gpiozero libère les broches. python3 -c "import gpiozero; print(gpiozero.__version__)" confirme la présence de la bibliothèque.
Erreurs fréquentes
ModuleNotFoundError: gpiozero: image minimale sans paquets recommandés —sudo apt install python3-gpiozero.- Oublier
chmod +xou le shebang :./bouton_led.pyrefuse de s'exécuter ; lancer avecpython3 bouton_led.py. - LED qui reste allumée après Ctrl-C : le script a été tué brutalement (SIGKILL) ; relancer proprement ou éteindre via un nouveau script.
- Mauvaise broche : gpiozero attend le numéro BCM (17, 27), pas le numéro de broche physique (11, 13).
- Fils mal enfoncés dans le connecteur 40 broches : le cas classique du « ça ne marche pas » — tester LED et bouton séparément d'abord.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
led_blink.pyPythonbutton_led.pyPythonservo_sweep.pyPythondht_temp.pyPythonoled_i2c.pyPythonmcp3008_read.pyPython