🛠 Faire clignoter la LED de statut via GPIO
Objetivos
Comprender cómo la Orange Pi PC controla sus pines GPIO y hacer parpadear el LED rojo de estado (PA15, denominado «orangepi:red:status» en el device tree mainline). Aprenderá los dos enfoques posibles: libgpiod (recomendado en Armbian/mainline) y WiringOP (el fork de wiringPi mantenido por Xunlong para Orange Pi).
Material
- Orange Pi PC con Armbian (kernel mainline)
- Fuente de alimentación de 5 V / 2 A mínimo en el conector jack DC (nunca en el puerto micro-USB OTG, que no puede alimentar la placa)
- Opcional: un LED externo + resistencia de 330 Ω si desea controlar un pin del conector de 40 pines
- Atención: lógica de 3.3 V; algunos pines de alimentación del conector pueden suministrar un voltaje desconocido (13 V/26 V reportados en esta generación H3) — mida con un multímetro antes de conectar nada.
Código completo
Enfoque libgpiod (sin bibliotecas propietarias):
sudo apt install gpiod
# PA15 = broche 15 de gpiochip0 (banque PA)
gpioset "$(gpiofind PA15)" 1; sleep 0.2; gpioset "$(gpiofind PA15)" 0
# Boucle de clignotement
while true; do gpioset "$(gpiofind PA15)" 1; sleep 0.5; gpioset "$(gpiofind PA15)" 0; sleep 0.5; done
Enfoque WiringOP en C (numeración sunxi: PA15 = 0×32 + 15 = 15):
/* blink.c — LED PA15 via WiringOP */
#include <wiringPi.h>
#define STATUS_LED 15
int main(void) {
if (wiringPiSetupG == -1) return 1;
pinMode(STATUS_LED, OUTPUT);
for (;;) {
digitalWrite(STATUS_LED, HIGH);
delay(150);
digitalWrite(STATUS_LED, LOW);
delay(150);
}
}
git clone https://github.com/orangepi-xunlong/wiringOP && cd wiringOP
./build && sudo ./build install
gcc -O2 blink.c -o blink -lwiringPi && sudo ./blink
Verificación esperada
El LED rojo de la placa parpadea aproximadamente 3 veces por segundo. Con gpioinfo, verá gpiochip0 (bancos PA a PH) y gpiochip1 (r_pio). La línea PA15 pasa a modo output.
Errores frecuentes
- Confundir los dos gpiochips: PL10 (LED verde) está en gpiochip1, PA15 en gpiochip0.
- Utilizar el número de pin físico del conector en lugar del número GPIO (PA15 = 15 en WiringOP, no 10).
- Alimentar la placa mediante micro-USB: la placa no se enciende en absoluto, es normal, solo el jack DC alimenta.
- Olvidar
sudo: sin permisos sobre /dev/gpiochip0, gpioset falla.
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