Browse Source

Readme and assets added

master
Gustavo Martinez 2 years ago
parent
commit
86c7028c89
2 changed files with 104 additions and 0 deletions
  1. +104
    -0
      Readme.md
  2. BIN
      bbled.png

+ 104
- 0
Readme.md View File

@ -0,0 +1,104 @@
# 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
```

BIN
bbled.png View File

Before After
Width: 1152  |  Height: 648  |  Size: 867 KiB

Loading…
Cancel
Save