🛠 Premier script Python : piloter les LED système
Objectifs
Écrire votre premier script Python sur l'Orange Pi PC (Armbian, Python 3 préinstallé) sans aucune bibliothèque exotique : le script liste les LED disponibles, lit leurs triggers kernel, puis prend le contrôle manuel de la LED rouge PA15. Vous comprendrez la philosophie mainline : tout est fichier dans /sys, pas de driver vendor nécessaire.
Matériel
- Orange Pi PC sous Armbian (Debian Trixie ou Ubuntu Resolute)
- Alimentation 5 V / 2 A (jack DC uniquement)
- Accès terminal : SSH ou écran HDMI ou série 115200 8N1 sur le connecteur 3 broches
- Un éditeur : nano ou vim
Code complet
Enregistrez dans ~/leds.py puis exécutez avec 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
Rendez-la exécutable : chmod +x leds.py && ./leds.py
Vérification attendue
Le script affiche la liste des LED (orangepi:green:pwr et orangepi:red:status), la LED rouge pulse en rythme cardiaque 5 secondes, clignote 10 fois rapidement, puis redevient un indicateur de charge CPU. Aucune erreur ni permission refusée.
Erreurs fréquentes
- Lancer sans les droits d'écriture sur /sys/class/leds : utilisez sudo ou ajoutez votre utilisateur au groupe gpio via une règle udev.
- Écrire dans brightness avec un trigger actif autre que none : le trigger écrase votre valeur, d'où l'étape trigger=none.
- Taper orangepi:red:status de travers : le nom exact vient du device tree sun8i-h3-orangepi-pc.dts.
- Croire le port micro-USB OTG capable d'alimenter la carte pendant les tests : il ne peut pas, la carte reste éteinte.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash