🛠 LEDs du Lichee RV Dock : LED verte et RGB WS2812 pilotée par le LEDC du D1

Sipeed Lichee RV Dock (Allwinner D1 / T-Head XuanTie C906) · debutant · Schéma : IMG-sipeed-lichee-rv-dock-debutant-1-licheerv-leds-ws2812.svg — Lichee RV Dock avec la LED verte du module sur la broche PC1 et la LED RGB WS2812 du Dock sur PC0 reliée au contrôleur matériel LEDC du SoC D1, plus la LED d'alimentation

Objetivos

El Lichee RV Dock posee DOS LED controlables bajo Linux mainline: el LED verde «status» del módulo (pin PC1, controlador LED class clásico) y el LED RGB WS2812 (NeoPixel) del Dock en el pin PC0 — una particularidad rara, está controlado por el periférico de hardware LEDC del D1, declarado en el device tree mainline como LED multicolor (clase multicolor), sin bit-banging. Este tutorial le hace descubrir /sys/class/leds, los triggers (timer, heartbeat) y la API multicolor multi_intensity.

Material

Código completo

# 1) Lister les LED visibles par le noyau
ls /sys/class/leds/
#   mainline : « green:status » (PC1, module) + une LED multicolore « status » (PC0, WS2812)

# 2) LED verte PC1 : trigger timer (clignotement 1 Hz)
echo timer | sudo tee '/sys/class/leds/green:status/trigger'
#   rythme cardiaque :
echo heartbeat | sudo tee '/sys/class/leds/green:status/trigger'
#   contrôle manuel :
echo none | sudo tee '/sys/class/leds/green:status/trigger'
echo 1 | sudo tee '/sys/class/leds/green:status/brightness'
echo 0 | sudo tee '/sys/class/leds/green:status/brightness'

# 3) RGB WS2812 (PC0) via le LEDC — LED multicolore, canaux R G B 0-255
RGB=$(ls -d /sys/class/leds/*status/multi_intensity 2>/dev/null | head -1)
echo "255 0 0"   | sudo tee "$RGB"     # rouge
echo "0 255 128" | sudo tee "$RGB"     # vert menthe
echo 64 | sudo tee "$(dirname $RGB)/brightness"   # luminosité globale

# 4) Petit script d'ambiance
while :; do for c in "255 0 0" "0 255 0" "0 0 255"; do
  echo "$c" | sudo tee "$RGB" >/dev/null; sleep 1; done; done

Verificación esperada

ls /sys/class/leds/ lista al menos el LED verde green:status y, con un kernel suficientemente reciente, un dispositivo multicolor *::status que contiene multi_intensity. El trigger timer hace parpadear el LED verde a 1 Hz; echo 1/0 sobre brightness lo enciende y apaga visiblemente. El WS2812 del Dock cambia realmente de color con multi_intensity (R G B separados por espacios) — si el dispositivo multicolor está ausente, su kernel aún no tiene el nodo LEDC del Dock. El cat de trigger muestra el valor activo entre corchetes.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales