You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
Gustavo Martinez 75a731fe55 Help added to terminal on script, Readme modified 2 years ago
Readme.md Help added to terminal on script, Readme modified 2 years ago
bbled.png Readme and assets added 2 years ago
led.py Help added to terminal on script, Readme modified 2 years ago

Readme.md

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

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.

#!/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.

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.

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.

Si el usuario no conoce los comandos, puede usar help para desplegar la lista de los comandos anteriormente mencionados, o bien al ingresar un comando erróneo saldrá una alerta que indicará que el comando es incorrecto y mostrará todos los comandos a usar.

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")
elif sys.argv[1] == "help":
    print("This is an application to control User LED 3")
	print("List of commands: ")
    print("on - Powers on the LED")
	print("off - Powers off the LED")
	print("blink - Makes the LED blink")
else:
    print("Error: This is not a command for this application")
    print("These are the commands you can use: ")
    print("on - Powers on the LED")
	print("off - Powers off the LED")
	print("blink - Makes the LED blink")
    
print("Script done") 

Ejecución

Para poder ejecutar nuestra aplicación se asigna los permisos necesarios con el siguiente comando:

sudo chmod u+x led.py

Y se ejecuta con cualquiera de los argumentos disponibles.

Encender el LED

sudo ./led.py on

APagar el LED

sudo ./led.py off

Parpadear el LED

sudo ./led.py blink