dllamas b60146dbfb | 2 years ago | |
---|---|---|
Readme.md | 2 years ago | |
main.c | 2 years ago |
#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.
#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.
#define bled "/brightness"
#define tled "/trigger"
#define en "/delay_on"
#define ap "/delay_off"
Se generan los prototipos.
//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.
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.
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.
void removeTrigger(){
writeLED(tled, "none");
}
Después de esto se guarda el archivo y se le dan permisos de ejecución con el comando:
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:
sudo ./Nombre_del_archivo.c blink