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.

112 lines
2.8 KiB

  1. # Control de LED Beagle Bone Black
  2. ## Este programa permite encender o apagar el LED 3 de la Beagle Bone Black con un script en C.
  3. ![](leds.png)
  4. Se comienza por importar librerías y declarar el path a seguir para
  5. manipular el LED 3.
  6. ```C
  7. #include<stdio.h>
  8. #include<stdlib.h>
  9. #include<string.h>
  10. #include<time.h>
  11. #define LED3_PATH "/sys/class/leds/beaglebone:green:usr3"
  12. ```
  13. Se deben definir los path de los registros a manipular.
  14. ```C
  15. #define bled "/brightness"
  16. #define tled "/trigger"
  17. #define en "/delay_on"
  18. #define ap "/delay_off"
  19. ```
  20. Se generan los prototipos.
  21. ```C
  22. //Protypes:
  23. void writeLED(char fileName[], char value[]);
  24. void removeTrigger();
  25. ```
  26. Se inicia el main, donde se indica cuando comienza la aplicación,
  27. asimismo, se hace una comparación de los argumentos de entrada para
  28. determinar si se enciende, se apaga o parpadea el LED. Para el parpadeo se utilizaron
  29. los registros de timer, delay_on y delay_off.
  30. ```C
  31. int main(int argc, char* argv[]){
  32. printf("Starting app\n");
  33. if(strcmp(argv[1],"on")==0){
  34. printf("encendiendo LED\n");
  35. removeTrigger();
  36. writeLED(bled,"1");
  37. }
  38. else if(strcmp(argv[1], "off")==0){
  39. printf("apagando LED\n");
  40. removeTrigger();
  41. writeLED(bled,"0");
  42. }
  43. else if(strcmp(argv[1],"blink")==0){
  44. printf("blink\n");
  45. writeLED(tled,"timer");
  46. writeLED("en","50");
  47. writeLED("ap","50");
  48. }
  49. else{
  50. printf("comando invalido \n");
  51. printf("Para encender el LED utilice: ./Nombre_del_archivo2 on \n");
  52. printf("Para apagar el LED utilice: ./Nombre_del_archivo2 off \n");
  53. printf("Para hacer parpadear el LED utilice: sudo ./Nombre_del_archivo2 blink \n ");
  54. }
  55. printf("programa finalizado");
  56. return 0;
  57. }
  58. ```
  59. La función que se utilizó para poder escribir a los registros del LED es la siguiente.
  60. ```C
  61. void writeLED(char fileName[], char value[]){
  62. FILE* fp;
  63. char fullName[150];
  64. sprintf(fullName, LED3_PATH "%s", fileName);
  65. fp = fopen(fullName, "w+");
  66. fprintf(fp, "%s", value);
  67. fclose(fp);
  68. }
  69. ```
  70. También fue necesario hacer una función para poder remover el trigger, la función es la siguiente.
  71. ```C
  72. void removeTrigger(){
  73. writeLED(tled, "none");
  74. }
  75. ```
  76. Después de esto se guarda el archivo y se le dan permisos de ejecución con el comando:
  77. ```sh
  78. sudo chmod u+x Nombre_del_archivo.c
  79. ```
  80. Teniendo esto es necesario compilar el archivo.
  81. ```sh
  82. gcc Nombre_del_archivo.c -o Nombre_del_archivo2
  83. ```
  84. 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:
  85. ```sh
  86. sudo ./Nombre_del_archivo2 blink
  87. ```
  88. Para encender y apagar el LED no es necesario utilizar el comando sudo.
  89. Para encender el LED utilice el siguiente comando:
  90. ```sh
  91. ./Nombre_del_archivo2 on
  92. ```
  93. Para apagar el LED utilice el siguiente comando:
  94. ```sh
  95. ./Nombre_del_archivo2 off
  96. ```