🛠 Fondu LED progressif avec PWM sous sysfs (meson)
Objectifs
Réaliser un fondu LED (variation d'intensité) sur le Le Potato en exportant une sortie PWM du contrôleur meson via /sys/class/pwm, après activation de l'overlay device tree correspondant.
Matériel
- Le Potato AML-S905X-CC sous Armbian mainline
- LED + résistance 330 Ω sur une broche compatible PWM du connecteur 40 broches
- Alimentation 5 V/2,5 A stable (micro-USB)
Code complet
#!/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
Vérification attendue
Après activation de l'overlay et redémarrage, /sys/class/pwm/pwmchipN existe ; après echo 0 > export, le nœud pwm0 apparaît et la LED monte et descend en intensité en boucle.
Erreurs fréquentes
- Overlay PWM non activé : aucun
/sys/class/pwm/pwmchipNlié à l'en-tête — activez l'interface puis redémarrez. - Confondre period et duty_cycle : les deux sont en nanosecondes ; duty_cycle > period est ignoré ou plafonné.
- Écrire dans
exportsans droit : utiliser sudo/tee. - LED sur une broche non PWM : aucun effet même si le sysfs répond — croiser avec le schéma et
gpioinfo.
Autres tutoriels pour cette carte
- 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
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash