| @ -0,0 +1,93 @@ | |||||
| #Control de LED Beagle Bone Black | |||||
| ##Este programa permite encender o apagar el LED 3 de la Beagle Bone Black con | |||||
| un script en C. | |||||
| Se comienza por importat librerías y declarar el path a seguir para | |||||
| manipular el LED 3. | |||||
| ```C | |||||
| #include<stdio.h> | |||||
| #include<stdlib.h> | |||||
| #include<string.h> | |||||
| #include<time.h> | |||||
| #define LED3_PATH "/sys/class/leds/beaglebone:green:usr3" | |||||
| ``` | |||||
| Se deben definir los path de los registros a manipular. | |||||
| ```C | |||||
| #define bled "/brightness" | |||||
| #define tled "/trigger" | |||||
| #define en "/delay_on" | |||||
| #define ap "/delay_off" | |||||
| ``` | |||||
| Se generan los prototipos. | |||||
| ```C | |||||
| //Protypes: | |||||
| void writeLED(char fileName[], char value[]); | |||||
| void removeTrigger(); | |||||
| ``` | |||||
| Se inicia el main, donde se indica cuando comienza la aplicación, | |||||
| asimismo, se hace una comparación de los argumentos de entrada para | |||||
| determinar si se enciende, se apaga o parpadea el LED. Para el parpadeo se utilizaron | |||||
| los registros de timer, delay_on y delay_off. | |||||
| ```C | |||||
| int main(int argc, char* argv[]){ | |||||
| printf("Starting app\n"); | |||||
| if(strcmp(argv[1],"on")==0){ | |||||
| printf("encendiendo LED\n"); | |||||
| removeTrigger(); | |||||
| writeLED(bled,"1"); | |||||
| } | |||||
| else if(strcmp(argv[1], "off")==0){ | |||||
| printf("apagando LED\n"); | |||||
| removeTrigger(); | |||||
| writeLED(bled,"0"); | |||||
| } | |||||
| else if(strcmp(argv[1],"blink")==0){ | |||||
| printf("blink\n"); | |||||
| writeLED(tled,"timer"); | |||||
| writeLED("en","50"); | |||||
| writeLED("ap","50"); | |||||
| } | |||||
| else{ | |||||
| printf("comando invalido"); | |||||
| } | |||||
| printf("programa finalizado"); | |||||
| return 0; | |||||
| } | |||||
| ``` | |||||
| La función que se utilizó para poder escribir a los registros del LED es la siguiente. | |||||
| ```C | |||||
| void writeLED(char fileName[], char value[]){ | |||||
| FILE* fp; | |||||
| char fullName[150]; | |||||
| sprintf(fullName, LED3_PATH "%s", fileName); | |||||
| fp = fopen(fullName, "w+"); | |||||
| fprintf(fp, "%s", value); | |||||
| fclose(fp); | |||||
| } | |||||
| ``` | |||||
| También fue necesario hacer una función para poder remover el trigger, la función es la siguiente. | |||||
| ```C | |||||
| void removeTrigger(){ | |||||
| writeLED(tled, "none"); | |||||
| } | |||||
| ``` | |||||
| Después de esto se guarda el archivo y se le dan permisos de ejecución con el comando: | |||||
| ```sh | |||||
| sudo chmod u+x Nombre_del_archivo.c | |||||
| ``` | |||||
| Finalmente para ejecutar el archivo en la Beagle Bone se utiliza el siguiente comando, en este ejemplo se le da el argumento para que el LED prenda y apague: | |||||
| ```sh | |||||
| sudo ./Nombre_del_archivo.c blink | |||||
| ``` | |||||