🛠 Variation d'intensité d'une LED en PWM
Objetivos
Hacer « respirar » un LED modulando el ancho de pulso (PWM). Dos enfoques en el ODROID-M1: el LED integrado led-work mediante los triggers del kernel (funcionalidad garantizada en Armbian/mainline, el device tree rk3568-odroid-m1.dts lo registra con el trigger heartbeat), y el PWM de hardware del RK3568B2 en el conector de 40 pines.
Material
- ODROID-M1 con Armbian (kernel mainline o vendor)
- Para el PWM externo: LED, resistencia, transistor NPN (el LED integrado se controla sin cableado)
- >
Código completo
# 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
Verificación esperada
El LED azul parpadea al ritmo (modo timer); con el PWM de hardware, el LED externo modula progresivamente de apagado a intensidad máxima.
Errores frecuentes
- Escribir en pwm0 antes de la exportación: el directorio aún no existe, esperar 1 s.
- Periodo en nanosegundos: 20000000 = 20 ms, no 20.
- Controlar un LED de potencia directamente por el pin: superar la corriente máxima del GPIO, usar un transistor.
- >
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash