🛠 PWM : faire respirer la LED bleue

Hardkernel ODROID-XU4 (Samsung Exynos5422) · intermediaire · Schéma : IMG-odroid-xu4-intermediaire-1-odroidxu4-pwm-led.svg — Signal PWM en dents de scie sortant du contrôleur PWM de l'ODROID-XU4 (canal 2) vers la LED bleue heartbeat, canal 0 relié au ventilateur

Objectifs

Maîtriser la sortie PWM de l'ODROID-XU4 sous Linux mainline : le device tree expose le canal PWM0 pour le ventilateur et PWM2 pour la LED bleue heartbeat. Vous libérerez le trigger du noyau pour piloter vous-même le rapport cyclique et faire « respirer » la LED.

Matériel

Code complet

#!/usr/bin/env bash
# respirer.sh — fade de la LED bleue heartbeat (PWM2) du XU4
set -euo pipefail
CHIP=/sys/class/pwm/pwmchip0

# 1) Liberer le trigger heartbeat pose par le device tree
if [ -e /sys/class/leds/odroid:blue:heartbeat/trigger ]; then
  echo none | sudo tee /sys/class/leds/odroid:blue:heartbeat/trigger
fi

# 2) Exporter le canal PWM2 (PWM0 = ventilateur, ne pas y toucher !)
echo 2 | sudo tee "$CHIP/export" >/dev/null 2>&1 || true
PWM="$CHIP/pwm2"

sudo tee "$PWM/period" >/dev/null <<< 1000000      # periode 1 ms (ns)
for d in $(seq 0 50000 1000000) $(seq 1000000 -50000 0); do
  echo "$d" | sudo tee "$PWM/duty_cycle" >/dev/null
  sleep 0.03
done

Vérification attendue

La LED bleue embarquée monte et descend progressivement en luminosité. cat $PWM/duty_cycle suit les valeurs écrites. Le ventilateur (pwm0, piloté par le governor thermique à 50/60/70 °C) continue de fonctionner normalement.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels