🛠 Faire clignoter une LED en C avec libgpiod sur Le Potato
Objectifs
Faire clignoter une LED sur le connecteur 40 broches du Le Potato (AML-S905X-CC) en C avec libgpiod, l'interface officiellement recommandée par Libre Computer — il n'y a pas de wiringPi sur cette carte et le vendor refuse de le porter.
Matériel
- Le Potato AML-S905X-CC sous Armbian (noyau mainline, meson-gxl)
- LED + résistance 330 Ω
- Broche physique 3 = GPIOAO_5 = gpiochip0 ligne 5 ; logique 3,3 V, aucune broche tolérante 5 V
- Masse sur une broche GND (6, 9, 14, 20, 25, 30, 34 ou 39)
Code complet
/* blink.c — gcc blink.c -o blink -lgpiod (paquet libgpiod-dev) */
#include <gpiod.h>
#include <stdio.h>
#include <unistd.h>
int main(void) {
struct gpiod_chip *chip = gpiod_chip_open_by_number(0);
if (!chip) { perror("gpiochip0"); return 1; }
struct gpiod_line *line = gpiod_chip_get_line(chip, 5); /* broche 3 */
if (!line || gpiod_line_request_output(line, "blink", 0)) {
perror("request"); return 1;
}
for (int i = 0; i < 10; i++) {
gpiod_line_set_value(line, i & 1);
usleep(200000);
}
gpiod_line_release(line);
gpiod_chip_close(chip);
return 0;
}
Vérification attendue
./blink fait clignoter la LED 10 fois à 5 Hz. Pendant l'exécution, gpioinfo gpiochip0 montre la ligne 5 (nommée « 7J1 Header Pin3 » dans le device tree) comme demandée par le consommateur « blink ».
Erreurs fréquentes
- Confondre broche physique et ligne GPIO : broche 3 = ligne 5 (GPIOAO_5). Vérifiez avec
lgpio info 3(libretech-wiring-tool) ougpioinfo. - API libgpiod 2.x différente de 1.x (
gpiod_line_request) : adaptez selon la distribution. - Envoyer du 5 V sur une broche : aucune broche n'est tolérante 5 V, carte endommagée.
- Permission refusée : ajoutez votre utilisateur au groupe
gpioou lancez en root.
Autres tutoriels pour cette carte
- Lire un bouton poussoir avec libgpiod (pull-up interne)
- GPIO en Python avec python3-libgpiod sur Le Potato
- Fondu LED progressif avec PWM sous sysfs (meson)
- Capteur BME280 (I2C) sur Le Potato : overlay et lecture
- Console série (ttyAML0) et SSH sur Le Potato
- Boot SD/eMMC et récupération (pyamlboot) sur Amlogic S905X
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash