🛠 Faire clignoter la LED de statut via GPIO
Objectifs
Comprendre comment l'Orange Pi PC pilote ses broches GPIO et faire clignoter la LED rouge de statut (PA15, nommée « orangepi:red:status » dans le device tree mainline). Vous apprendrez les deux approches possibles : libgpiod (recommandé sous Armbian/mainline) et WiringOP (le fork de wiringPi maintenu par Xunlong pour Orange Pi).
Matériel
- Orange Pi PC sous Armbian (kernel mainline)
- Alimentation 5 V / 2 A minimum sur la prise jack DC (jamais le port micro-USB OTG, qui ne peut pas alimenter la carte)
- Optionnel : une LED externe + résistance 330 Ω si vous voulez piloter une broche du connecteur 40 broches
- Attention : logique 3.3 V ; certaines broches d'alimentation du connecteur peuvent délivrer une tension inconnue (13 V/26 V rapportés sur cette génération H3) — mesurez au multimètre avant de brancher quoi que ce soit.
Code complet
Approche libgpiod (aucune bibliothèque propriétaire) :
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
Approche WiringOP en C (numérotation 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
Vérification attendue
La LED rouge de la carte clignote environ 3 fois par seconde. Avec gpioinfo, vous voyez gpiochip0 (banques PA à PH) et gpiochip1 (r_pio). La ligne PA15 passe en mode output.
Erreurs fréquentes
- Confondre les deux gpiochips : PL10 (LED verte) est sur gpiochip1, PA15 sur gpiochip0.
- Utiliser le numéro de broche physique du connecteur au lieu du numéro GPIO (PA15 = 15 en WiringOP, pas 10).
- Alimenter la carte par le micro-USB : la carte ne s'allume pas du tout, c'est normal, seul le jack DC alimente.
- Oublier
sudo: sans permissions sur /dev/gpiochip0, gpioset échoue.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash