Este es un repositorio para controlar un LED de la Beagle Bone Black
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.
dllamas 107cac6dd8 Actualizar 'Readme.md' 2 years ago
Readme.md Actualizar 'Readme.md' 2 years ago
leds.png Subir archivos a '' 2 years ago
main.c Actualizar 'main.c' 2 years ago

Readme.md

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 importar 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 \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.

  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");
}   

Permisos del archivo.

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

Compilación y ejecución.

Teniendo esto es necesario compilar el archivo.

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:

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:

./Nombre_del_archivo2 on

Para apagar el LED utilice el siguiente comando:

./Nombre_del_archivo2 off