🛠 Premier script Python : piloter les LED système
Objetivos
Escribir su primer script Python en la Orange Pi PC (Armbian, Python 3 preinstalado) sin ninguna biblioteca exótica: el script lista los LED disponibles, lee sus triggers del kernel y luego toma el control manual del LED rojo PA15. Comprenderá la filosofía mainline: todo es un archivo en /sys, no se necesita ningún driver del fabricante.
Hardware
- Orange Pi PC con Armbian (Debian Trixie o Ubuntu Resolute)
- Fuente de alimentación de 5 V / 2 A (solo conector DC)
- Acceso a terminal: SSH, pantalla HDMI o serie 115200 8N1 en el conector de 3 pines
- Un editor: nano o vim
Código completo
Guárdelo en ~/leds.py y ejecútelo con python3 leds.py:
#!/usr/bin/env python3
"""leds.py — découverte et contrôle des LED de l'Orange Pi PC (mainline)."""
from pathlib import Path
import time
LED = Path("/sys/class/leds/orangepi:red:status") # PA15, du device tree
def main -> None:
leds = sorted(p.name for p in Path("/sys/class/leds").iterdir)
print("LEDs système :", leds)
triggers = (LED / "available_triggers").read_text.split
print("Triggers dispo :", triggers)
# 1) Confier la LED à un trigger kernel (aucun bit-banging utilisateur)
(LED / "trigger").write_text("heartbeat")
print("Mode heartbeat pendant 5 s...")
time.sleep(5)
# 2) Reprendre la main et clignoter manuellement
(LED / "trigger").write_text("none")
for _ in range(10):
(LED / "brightness").write_text("255")
time.sleep(0.15)
(LED / "brightness").write_text("0")
time.sleep(0.15)
# Rendre la LED au trigger par défaut (CPU)
(LED / "trigger").write_text("cpu")
print("Terminé, LED rendue au noyau.")
if __name__ == "__main__":
main
Hágalo ejecutable: chmod +x leds.py && ./leds.py
Verificación esperada
El script muestra la lista de LED (orangepi:green:pwr y orangepi:red:status), el LED rojo pulsa con un ritmo cardíaco durante 5 segundos, parpadea 10 veces rápidamente y luego vuelve a ser un indicador de carga de CPU. Sin errores ni permisos denegados.
Errores frecuentes
- Ejecutar sin permisos de escritura en /sys/class/leds: use sudo o añada su usuario al grupo gpio mediante una regla udev.
- Escribir en brightness con un trigger activo distinto de none: el trigger sobrescribe su valor, de ahí el paso trigger=none.
- Escribir mal orangepi:red:status: el nombre exacto proviene del device tree sun8i-h3-orangepi-pc.dts.
- Creer que el puerto micro-USB OTG puede alimentar la placa durante las pruebas: no puede, la placa permanece apagada.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash