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

Hardkernel ODROID-C2 (Amlogic S905) · intermediaire · Schéma : IMG-odroid-c2-intermediaire-1-odroidc2-pwm-led.svg — LED pilotée par un signal PWM via le connecteur J2 avec transistor de puissance

Objetivos

Hacer variar la intensidad de un LED (respiración luminosa) con la salida PWM del Amlogic S905 expuesta en el conector J2, utilizando la interfaz sysfs PWM del kernel mainline (el DTS meson-gxbb-odroidc2 denomina las señales PWM D y PWM B en el conector).

Material

Código completo

#!/usr/bin/env bash
# pwm_respiration.sh — respiration LED via sysfs PWM
set -e
CHIP=$(ls /sys/class/pwm/ | grep -m1 pwmchip || true)
[ -z "$CHIP" ] && { echo "aucun pwmchip — activer le overlay PWM (armbian-config)"; exit 1; }
echo 0 > /sys/class/pwm/$CHIP/export
P=/sys/class/pwm/$CHIP/pwm0
echo 20000 > $P/period        # 20 us de periode
while :; do
  for pct in $(seq 0 5 100) $(seq 95 -5 0); do
    echo $(( (20000 * pct) / 100 )) > $P/duty_cycle
    echo 1 > $P/enable
    sleep 0.03
  done
done

Verificación esperada

El LED modula progresivamente de apagado a intensidad máxima y viceversa, sin parpadeo perceptible. cat $P/duty_cycle sigue la rampa. Si /sys/class/pwm está vacío, el controlador PWM no está activado: añadir el overlay/device-tree correspondiente (armbian-config > overlays) y reiniciar.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales