🛠 Allumer une LED via le GPIO
Objetivos
Hacer parpadear un LED en el ODROID-XU4 utilizando el fork de wiringPi mantenido por Hardkernel, o libgpiod bajo Armbian. Aprenderás a identificar los pines GPIO con gpio readall (o gpioinfo) y a respetar los niveles de tensión de los pines.
Material
- ODROID-XU4 alimentado por un adaptador de 5 V/4 A (conector de barril de 5,5/2,1 mm)
- 1 LED + resistencia de 330 Ω + cables Dupont
- Imagen de Armbian (kernel 6.6.x) o Ubuntu Hardkernel
- La placa posee un conector de 30 pines (GPIO, IRQ, SPI, ADC) y un conector de 12 pines (GPIO, I2S, I2C)
Código completo
/* blink.c — clignotement LED via wiringPi (fork Hardkernel)
* Build : gcc -o blink blink.c -lwiringPi */
#include <wiringPi.h>
#include <stdio.h>
int main(void) {
if (wiringPiSetup == -1) { /* numerotation wiringPi */
fprintf(stderr, "wiringPiSetup a echoue (lancer en root ?)\n");
return 1;
}
/* Lancer d'abord `gpio readall` et choisir une broche programmable
du header principal. Ne PAS deviner depuis une table Raspberry Pi. */
const int LED = 0;
pinMode(LED, OUTPUT);
for (;;) {
digitalWrite(LED, HIGH); delay(150);
digitalWrite(LED, LOW); delay(150);
}
}
Compila y ejecuta: gcc -o blink blink.c -lwiringPi && sudo ./blink.
Verificación esperada
El LED parpadea aproximadamente 3 veces por segundo (150 ms encendido, 150 ms apagado). gpio readall muestra el pin seleccionado en modo OUTPUT y alternando entre los estados 1/0.
Errores frecuentes
- Olvidar
sudo: wiringPi necesita acceso privilegiado, por lo quewiringPiSetupdevuelve -1. - Utilizar una tabla de pines de Raspberry Pi: el fork de Hardkernel (
github.com/hardkernel/wiringPi) tiene sus propias tablas para ODROID, siempre utilizagpio readall. - Aplicar 5 V a un pin: los pines de E/S no tienen protección contra sobretensión, la placa puede dañarse permanentemente.
- Resistencia incorrecta: sin la resistencia de 330 Ω, el LED se quema (o consume demasiada corriente).
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash