🛠 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.

Objectifs

Faire varier l'intensité d'une LED (fondu « respiration ») avec la sortie PWM de l'ODROID-N2. Le connecteur 40 broches expose 6 canaux PWM (spécifications CNX) ; on cible ici la ligne PWM associée à GPIOX_4 (broche physique 13). Sous kernel mainline, le contrôleur PWM Amlogic (AO/EE) apparaît dans /sys/class/pwm.

Matériel

Code complet

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

Vérification attendue

Après export, /sys/class/pwm/pwmchip0/pwm0/ contient period, duty_cycle, enable. Le script fait varier la luminosité de la LED de éteinte à pleine intensité par paliers de 5 % (rapport cyclique 0 → 50000/500000 ns). cat duty_cycle suit la valeur écrite. Pour la fréquence, 20 kHz : period=50000, duty=25000 pour 50 %.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels