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.

93 lines
2.3 KiB

  1. #Control de LED Beagle Bone Black
  2. ##Este programa permite encender o apagar el LED 3 de la Beagle Bone Black con
  3. un script en C.
  4. Se comienza por importat 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");
  51. }
  52. printf("programa finalizado");
  53. return 0;
  54. }
  55. ```
  56. La función que se utilizó para poder escribir a los registros del LED es la siguiente.
  57. ```C
  58. void writeLED(char fileName[], char value[]){
  59. FILE* fp;
  60. char fullName[150];
  61. sprintf(fullName, LED3_PATH "%s", fileName);
  62. fp = fopen(fullName, "w+");
  63. fprintf(fp, "%s", value);
  64. fclose(fp);
  65. }
  66. ```
  67. También fue necesario hacer una función para poder remover el trigger, la función es la siguiente.
  68. ```C
  69. void removeTrigger(){
  70. writeLED(tled, "none");
  71. }
  72. ```
  73. Después de esto se guarda el archivo y se le dan permisos de ejecución con el comando:
  74. ```sh
  75. sudo chmod u+x Nombre_del_archivo.c
  76. ```
  77. 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:
  78. ```sh
  79. sudo ./Nombre_del_archivo.c blink
  80. ```