🛠 Premier script Python : piloter la LED depuis Python
Objetivos
Escribir tu primer script Python en el ODROID-N2: encender y apagar un LED controlado desde Python mediante libgpiod (módulo gpiod), reutilizando el montaje del tutorial de LED. El S922X (4× Cortex-A73 + 2× Cortex-A53) ejecuta Python 3 sin esfuerzo bajo Armbian.
Material
- ODROID-N2/N2+ con Armbian, conectado por SSH o con pantalla y teclado (HDMI 2.0)
- LED + resistencia de 330 Ω en PIN_23, GND en PIN_25
sudo apt install python3-gpiod(opip install gpiozerosegún la imagen)
Código completo
#!/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
Verificación esperada
python3 clignotant.py imprime cycle 1/10 hasta cycle 10/10 durante 10 segundos mientras el LED parpadea a 1 Hz, luego el script termina correctamente y el LED permanece apagado. En caso de AttributeError, verifica la versión de la API de libgpiod (python3 -c "import gpiod; print(gpiod.__version__)").
Errores frecuentes
ModuleNotFoundError: gpiod: instalapython3-gpiod, nopip install gpiod(que no es el binding oficial).PermissionErroren gpiochip0: falta el grupogpioo hay que ejecutarlo con sudo.line_offset_to_namefalla: el device-tree de la imagen no expone los nombresPIN_xx; lista las líneas congpioinfo gpiochip0y usa el offset numérico.- Olvidar
line.release: la línea queda ocupada y bloquea los scripts siguientes. - Confundir las API de libgpiod v1 (
Chip.find_by_name,gpio_line_request_output) y v2 (get_line): adapta el código al binding instalado.
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