🛠 Variation d'intensité d'une LED avec le PWM

ODROID-N2 / ODROID-N2+ (Hardkernel) · intermediaire · Schéma : IMG-odroid-n2-intermediaire-1-odroidn2-pwm-led.svg — LED avec résistance branchée sur la sortie PWM (broche PIN_13, GPIOX_4) de l'ODROID-N2, contrôlée via sysfs pwmchip pour un fondu lumineux.

Objetivos

Hacer variar la intensidad de un LED (efecto de fundido «respiración») con la salida PWM del ODROID-N2. El conector de 40 pines expone 6 canales PWM (especificaciones CNX); aquí nos centramos en la línea PWM asociada a GPIOX_4 (pin físico 13). Bajo el kernel mainline, el controlador PWM Amlogic (AO/EE) aparece en /sys/class/pwm.

Material

Código completo

#!/usr/bin/env bash
# respiration.sh — fondu PWM sur pwmchip0 canal 0 (vérifier le canal !)
set -e
CHIP=/sys/class/pwm/pwmchip0
[ -e $CHIP/pwm0 ] || echo 0 | sudo tee $CHIP/export
sleep 0.2
echo 500000 | sudo tee $CHIP/pwm0/period   # 500 µs = 2 kHz
echo 1 | sudo tee $CHIP/pwm0/enable
while true; do
  for d in $(seq 0 25000 50000); do        # montée
    echo $d | sudo tee $CHIP/pwm0/duty_cycle; sleep 0.03; done
  for d in $(seq 50000 -25000 0); do       # descente
    echo $d | sudo tee $CHIP/pwm0/duty_cycle; sleep 0.03; done
done

Verificación esperada

Tras la exportación, /sys/class/pwm/pwmchip0/pwm0/ contiene period, duty_cycle, enable. El script hace variar la luminosidad del LED de apagado a intensidad máxima en pasos del 5 % (ciclo de trabajo 0 → 50000/500000 ns). cat duty_cycle sigue el valor escrito. Para la frecuencia, 20 kHz: period=50000, duty=25000 para el 50 %.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales