🛠 Faire clignoter une LED avec libgpiod
Objetivos
Descubrir el GPIO de la placa (conector de 40 pines, lógica de 3,3 V) haciendo parpadear un LED con libgpiod, el método moderno que reemplaza al antiguo wiringPi. Comprenderás la diferencia entre el número de pin físico y el número GPIO (BCM), así como el límite de corriente por pin (máximo 16 mA por pin, 50 mA para todo el conector).
Material
- Placa tipo Raspberry Pi 3 Model B+ con Raspberry Pi OS Lite instalado
- 1 LED rojo + 1 resistencia de 330 Ω
- 2 cables Dupont macho-hembra
- Fuente de alimentación de 5,1 V / 2,5 A recomendada (la 3B+ consume más que la 3B)
Código completo
Cableado: pin 11 (GPIO17) → resistencia de 330 Ω → ánodo del LED → cátodo del LED → pin 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
Verificación esperada
El LED parpadea aproximadamente una vez por segundo durante 5 segundos. gpiodetect muestra gpiochip0, y gpioinfo gpiochip0 muestra la línea 17 como salida mientras se ejecuta el comando. No debería haber errores de permiso si usas sudo (o estás en el grupo gpio).
Errores frecuentes
- Confundir el pin físico 11 y el GPIO17: aquí es el mismo pin, pero para otros pines la confusión es rápida — verifica siempre en un esquema del conector de 40 pines.
- Olvidar la resistencia: el LED se quema o extrae demasiada corriente del pin (límite de 16 mA).
- LED al revés: el cátodo (pata corta) debe ir hacia GND.
gpiodetectvacío: kernel demasiado antiguo o imagen exótica sin controlador GPIO.- Alimentar el LED desde los 5 V en lugar del GPIO: la línea GPIO no verá ningún cambio.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
led_blink.pyPythonbutton_led.pyPythonservo_sweep.pyPythondht_temp.pyPythonoled_i2c.pyPythonmcp3008_read.pyPython