🛠 Fondu LED progressif avec PWM sous sysfs (meson)
Objetivos
Realizar un fundido de LED (variación de intensidad) en el Le Potato exportando una salida PWM del controlador meson a través de /sys/class/pwm, después de activar la capa de dispositivo (overlay) del árbol de dispositivos correspondiente.
Material
> SIN VERIFICAR: el pin PWM exacto del conector de 40 pines y su overlay no están confirmados por la ficha técnica; verifique con sudo armbian-config (System > Options > HW interfaces) y luego ls /sys/class/pwm — el hub oficial documenta la activación de las interfaces de hardware (I2C/SPI/PWM) antes de su uso.
- Le Potato AML-S905X-CC con Armbian mainline
- LED + resistencia de 330 Ω en un pin compatible con PWM del conector de 40 pines
- Fuente de alimentación estable de 5 V/2,5 A (micro-USB)
Código completo
#!/bin/bash
# fondu.sh — fondu LED via sysfs PWM (adapter pwmchipN selon votre overlay)
CHIP=0 # /sys/class/pwm/pwmchip$CHIP
OUT=/sys/class/pwm/pwmchip$CHIP
export $OUT/pwm0 2>/dev/null || echo 0 | sudo tee $OUT/export
duty_max=1000000 # période 1 ms en nanosecondes
echo $duty_max | sudo tee $OUT/pwm0/period
echo 1 | sudo tee $OUT/pwm0/enable
while true; do
for ((d=0; d<=duty_max; d+=25000)); do
echo $d | sudo tee $OUT/pwm0/duty_cycle >/dev/null; sleep 0.02; done
for ((d=duty_max; d>=0; d-=25000)); do
echo $d | sudo tee $OUT/pwm0/duty_cycle >/dev/null; sleep 0.02; done
done
Verificación esperada
Después de activar el overlay y reiniciar, /sys/class/pwm/pwmchipN existe; después de ejecutar echo 0 > export, el nodo pwm0 aparece y el LED sube y baja de intensidad en bucle.
Errores frecuentes
> SIN VERIFICAR: números exactos de pwmchip y de pin según el kernel utilizado.
- Overlay PWM no activado: no hay ningún
/sys/class/pwm/pwmchipNvinculado al conector — active la interfaz y reinicie. - Confundir period y duty_cycle: ambos están en nanosegundos; si duty_cycle > period, se ignora o se limita al máximo.
- Escribir en
exportsin permisos: use sudo/tee. - LED en un pin no PWM: ningún efecto aunque el sysfs responda — cruce la información con el esquema y
gpioinfo.
Otros tutoriales para esta placa
- Faire clignoter une LED en C avec libgpiod sur Le Potato
- Lire un bouton poussoir avec libgpiod (pull-up interne)
- GPIO en Python avec python3-libgpiod sur Le Potato
- 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
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash