🛠 Premier script Python : piloter la LED depuis Python
Objectifs
Écrire son premier script Python sur l'ODROID-N2 : allumer et éteindre une LED pilotée depuis Python via libgpiod (module gpiod), en réutilisant le montage du tutoriel LED. Le S922X (4× Cortex-A73 + 2× Cortex-A53) fait tourner Python 3 sans effort sous Armbian.
Matériel
- ODROID-N2/N2+ sous Armbian, connecté en SSH ou écran clavier (HDMI 2.0)
- LED + résistance 330 Ω sur PIN_23, GND sur PIN_25
sudo apt install python3-gpiod(oupip install gpiozeroselon l'image)
Code complet
#!/usr/bin/env python3
"""clignotant.py — LED sur PIN_23 (GPIOX_11) via libgpiod, ODROID-N2."""
import gpiod, time
def main:
with gpiod.Chip("gpiochip0") as chip:
line = chip.get_line(chip.line_offset_to_name("PIN_23"))
line.request(consumer="clignotant", type=gpiod.LINE_REQ_DIR_OUT,
default_val=0)
try:
for i in range(10):
line.set_value(1); time.sleep(0.5)
line.set_value(0); time.sleep(0.5)
print(f"cycle {i + 1}/10")
finally:
line.release
if __name__ == "__main__":
main
Vérification attendue
python3 clignotant.py imprime cycle 1/10 à cycle 10/10 sur 10 secondes pendant que la LED clignote à 1 Hz, puis le script se termine proprement et la LED reste éteinte. En cas de AttributeError, vérifier la version de l'API libgpiod (python3 -c "import gpiod; print(gpiod.__version__)").
Erreurs fréquentes
ModuleNotFoundError: gpiod: installerpython3-gpiod, paspip install gpiod(qui n'est pas le binding officiel).PermissionErrorsur gpiochip0 : groupegpiomanquant ou à lancer en sudo.line_offset_to_nameéchoue : le device-tree de l'image n'expose pas les nomsPIN_xx; lister les lignes avecgpioinfo gpiochip0et utiliser l'offset numérique.- Oubli de
line.release: la ligne reste occupée et bloque les scripts suivants. - Confondre les API libgpiod v1 (
Chip.find_by_name,gpio_line_request_output) et v2 (get_line) : adapter au binding installé.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash