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.

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