|
|
- # Control de LED de usuario por medio de script en Python
-
- El objetivo de este script en Python es controlar uno de los LED's de usuario
- integrados en la BeagleBone Black por medio de los registros del sistema.
-
- ![BeagleBone Black y sus LED's de usuario](bbled.png)
-
- ## Header
-
- En la primera línea de nuestro script se añade una línea con la dirección de los binarios
- de Python, al momento en que se lea esta línea, sabrá como debe ejecutar el script
- sin que lo indiquemos en la terminal, junto con la librería para reconocer los
- argumentos de entrada en al terminal. De igual forma, se define la dirección del LED 3
- dónde se encuentran los registros a modificar.
-
- ```python
- #!/usr/bin/python
- import sys #reconocer lo que hay en la terminal
- LED_PATH = "/sys/class/leds/beaglebone:green:usr3"
- ```
- ## Funciones
-
- Se tienen dos funciones: *writeLED* y *removeTrigger*. writeLED utiliza la función *open*
- para abrir el archivo en el directorio definido anteriormente, como Python es un
- lenguaje interpretado no es necesario definir el puntero como en C o C++. Los métodos
- *.write()* y *.close()* escriben el valor que indiquemos y cierran los archivos de los registros.
-
- La función removeTrigger utiliza a la función writeLED para desactivar el trigger.
-
- ```python
- def writeLED(fileName, value, path=LED_PATH):
- """
- Ayuda de la rutina
- writeLED(fileName, value, path=LED_PATH)
- """
- fo = open(path + fileName, "w")
- fo.write(value)
- fo.close()
- return
-
- def removeTrigger():
- writeLED("/trigger","none")
- return
- ```
-
- ## Main
- Para tener accesso a los argumentos de la terminal usamos *sys*, junto con *argv* para obtener la cantidad y el valor de los mismos.
-
-
- Al obtener la longitud de argv, sabemos si el usuario ingresó el número correcto de argumentos
- el cuál es 1.
-
- ```python
- print("Starting App")
-
- if len(sys.argv)!=2:
- print("Incorrect number of arguments")
- sys.exit(2)
- ```
- Se utiliza un ciclo if para seleccionar la acción del LED, comparando el valor
- de argumento en la terminal con unos comandos definidos: ***on***, ***off*** y ***blink***
-
- Para prender o apagar el LED, se deshabilita el trigger y se modifica el registro de *brightness*.
-
- En el caso del parpadeo del LED, el trigger se modifica para activar el timer
- y se utilizan los registro de *delay_on* y *delay_off* para establecer
- el tiempo de encendido y apagado.
-
- ```python
- if sys.argv[1] == "on":
- print("LED on \n")
- removeTrigger()
- writeLED("/brightness", "1")
- print("LED3 on \n")
- elif sys.argv[1] == "off":
- print("LED off \n")
- removeTrigger()
- writeLED("/brightness", "0")
- print("LED3 off \n")
- elif sys.argv[1] == "blink":
- print("LED blinking \n")
- writeLED("/trigger", "timer")
- writeLED("/delay_on", "500")
- writeLED("/delay_off", "500")
- else:
- print("Wrong command!!!")
-
- print("Script done")
- ```
-
- ## Ejecución
-
-
- Se cambian los permisos de nuestro script.
-
- ```bash
- sudo chmod u+x led.py
- ```
-
- Y se ejecuta con cualquiera de los arguemntos mencionados anteriormente.
-
- ```bash
- sudo ./led.py blink
- ```
|