🛠 Faire clignoter une LED avec libgpiod
Objectifs
Découvrir le GPIO de la carte (connecteur 40 broches, logique 3,3 V) en faisant clignoter une LED avec libgpiod, la méthode moderne qui remplace le vieux wiringPi. Vous comprendrez la différence entre numéro de broche physique et numéro GPIO (BCM), et la limite de courant par broche (16 mA max par broche, 50 mA pour tout le connecteur).
Matériel
- Carte type Raspberry Pi 3 Model B+ avec Raspberry Pi OS Lite installé
- 1 LED rouge + 1 résistance 330 Ω
- 2 fils Dupont mâle-femelle
- Alimentation 5,1 V / 2,5 A recommandée (la 3B+ consomme plus que la 3B)
Code complet
Câblage : broche 11 (GPIO17) → résistance 330 Ω → anode LED → cathode LED → broche 14 (GND).
# Installation de libgpiod (présent par défaut sur Raspberry Pi OS récent)
sudo apt update && sudo apt install -y gpiod
# Lister les puces GPIO : gpiochip0 est le connecteur 40 broches
gpiodetect
gpioinfo gpiochip0
# Clignotement : mode sortie, puis basculer l'état 10 fois
sudo gpioset gpiochip0 17=0 # état initial éteint
for i in $(seq 1 10); do
sudo gpioset --hold-period 500ms gpiochip0 17=1
sudo gpioset gpiochip0 17=0
sleep 0.5
done
Vérification attendue
La LED clignote environ une fois par seconde pendant 5 secondes. gpiodetect affiche gpiochip0, et gpioinfo gpiochip0 montre la ligne 17 en sortie quand la commande tourne. Aucune erreur de permission si vous utilisez sudo (ou êtes dans le groupe gpio).
Erreurs fréquentes
- Inverser broche physique 11 et GPIO17 : ici c'est la même broche, mais pour d'autres broches la confusion grille vite — vérifiez toujours sur un schéma du connecteur 40 broches.
- Oublier la résistance : la LED grille ou tire trop sur la broche (limite 16 mA).
- LED à l'envers : la cathode (patte courte) doit aller vers GND.
gpiodetectvide : noyau trop ancien ou image exotique sans pilote GPIO.- Alimenter la LED depuis le 5 V au lieu du GPIO : la ligne GPIO ne verra rien changer.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
led_blink.pyPythonbutton_led.pyPythonservo_sweep.pyPythondht_temp.pyPythonoled_i2c.pyPythonmcp3008_read.pyPython