# 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. ![](leds.png) Se comienza por importar librerías y declarar el path a seguir para manipular el LED 3. ```C #include #include #include #include #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 \n"); printf("Para encender el LED utilice: ./Nombre_del_archivo2 on \n"); printf("Para apagar el LED utilice: ./Nombre_del_archivo2 off \n"); printf("Para hacer parpadear el LED utilice: sudo ./Nombre_del_archivo2 blink \n "); } 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"); } ``` ## Permisos del archivo. 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 ``` ## Compilación y ejecución. Teniendo esto es necesario compilar el archivo. ```sh gcc Nombre_del_archivo.c -o Nombre_del_archivo2 ``` 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_archivo2 blink ``` Para encender y apagar el LED no es necesario utilizar el comando sudo. Para encender el LED utilice el siguiente comando: ```sh ./Nombre_del_archivo2 on ``` Para apagar el LED utilice el siguiente comando: ```sh ./Nombre_del_archivo2 off ```