🛠 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

Objectifs

Faire varier l'intensité d'une LED (respiration lumineuse) avec la sortie PWM de l'Amlogic S905 exposée sur le connecteur J2, en utilisant l'interface sysfs PWM du noyau mainline (la DTS meson-gxbb-odroidc2 nomme les signaux PWM D et PWM B sur l'en-tête).

Matériel

Code complet

#!/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

Vérification attendue

La LED module progressivement d'éteinte à pleine intensité puis inversement, sans scintillement perceptible. cat $P/duty_cycle suit la rampe. Si /sys/class/pwm est vide, le contrôleur PWM n'est pas activé : ajouter le overlay/device-tree ad hoc (armbian-config > overlays) puis redémarrer.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels