🛠 Variation d'intensité d'une LED en PWM
Objectifs
Faire « respirer » une LED en modulant la largeur d'impulsion (PWM). Deux approches sur l'ODROID-M1 : la LED embarquée led-work via les triggers du noyau (garantie fonctionnelle sur Armbian/mainline, le device tree rk3568-odroid-m1.dts l'enregistre avec le trigger heartbeat), et le PWM matériel du RK3568B2 sur le connecteur 40 broches.
Matériel
- ODROID-M1 sous Armbian (noyau mainline ou vendor)
- Pour le PWM externe : LED, résistance, transistor NPN (la LED embarquée se pilote sans câblage)
- >
Code complet
# 1) Sans câblage : variation logicielle de la LED bleue embarquée
ls /sys/class/leds/led-work/trigger # contient « timer » et « heartbeat »
echo timer > /sys/class/leds/led-work/trigger
echo 200 > /sys/class/leds/led-work/delay_on
echo 800 > /sys/class/leds/led-work/delay_off
# 2) PWM matériel (si un pwmchip est exposé côté connecteur)
cat /sys/class/pwm/pwmchip*/label 2>/dev/null
# Exporter le canal 0, période 20 ms, rapport cyclique 50 % :
echo 0 > /sys/class/pwm/pwmchip0/export
sleep 1
printf 20000000 > /sys/class/pwm/pwmchip0/pwm0/period
printf 10000000 > /sys/class/pwm/pwmchip0/pwm0/duty_cycle
printf 1 > /sys/class/pwm/pwmchip0/pwm0/enable
Vérification attendue
La LED bleue clignote en rythme (mode timer) ; avec le PWM matériel, la LED externe module progressivement d'éteinte à pleine intensité.
Erreurs fréquentes
- Écrire dans pwm0 avant l'export : le répertoire n'existe pas encore, attendre 1 s.
- Période en nanosecondes : 20000000 = 20 ms, pas 20.
- Piloter une LED de puissance directement par la broche : dépasser le courant max du GPIO, utiliser un transistor.
- >
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash