Browse Source

Subir archivos a ''

master
dllamas 2 years ago
parent
commit
edcf3697c7
1 changed files with 135 additions and 0 deletions
  1. +135
    -0
      Readme.md

+ 135
- 0
Readme.md View File

@ -0,0 +1,135 @@
#Control de LED Beagle Bone Black
##Este programa permite encender o apagar todos los LED de la Beagle Bone Black con
un script en C++.
Se comienza por importat librerías y declarar el path a seguir para
manipular los LEDs.
```C++
/* led.cpp */
#include"led.h"
#include<iostream>
#include<fstream>
#include<string>
#include<sstream>
#define LED_PATH "/sys/class/leds/beaglebone:green:usr"
```
Se creó un archivo de libreria llamado led.h, donde se declara CLED como una clase
y también se declaran los distinto métodos que puede utilizar.
```C++
class CLED{
private:
std::string path;
int ledNumber;
virtual void WriteLED(std::string filename, std::string value);
virtual void RemoveTrigger();
public:
CLED(int ledNumber); //class creator
virtual void TurnOn();
virtual void TurnOff();
virtual void blink();
virtual ~CLED(); //class deconstructor
};
```
El método para poder escribir a los LED es el siguiente:
```C
void CLED::WriteLED(std::string filename, std::string value){
std::ofstream fs;
fs.open((path+filename).c_str());
fs << value;
fs.close();
}
```
El método para poder eliminar el trigger es el siguiente:
```C++
void CLED::RemoveTrigger(){
WriteLED("/trigger", "none");
}
```
Los métodos para encender, apagar y parpadear son los siguientes:
```C++
void CLED::TurnOn(){
std::cout << "LED" << ledNumber << "on" << std::endl;
RemoveTrigger();
WriteLED("/brightness", "1");
}
void CLED::TurnOff(){
std::cout << "LED" << ledNumber << "off" << std::endl;
RemoveTrigger();
WriteLED("/brightness","0");
}
void CLED::blink(){
std::cout << "LED" << ledNumber << "blinking" << std::endl;
WriteLED("/trigger", "timer");
WriteLED("/delay_on", "50");
WriteLED("/delay_off", "50");
}
```
Se inicia el main, donde se indica cómo ejecutar la aplicación, también se manda
un mensaje indicando que comienza la aplicación,
asimismo, se hace una comparación de los argumentos de entrada para
determinar si se enciende, se apaga o parpadea los LED.
```C++
int main(int argc, char* argv[]){
if(argc!=2){
std::cout << "Para usarse es: makeLEDS <comand>" << std::endl;
std::cout << "los comandos son on, off y blink" << std::endl;
}
std::cout << "Starting app" << std::endl;
std::string cmd(argv[1]);
// se crean 4 objetos de LED y se ponen en el array para controlar todos los LEDS.
CLED leds[4]= {CLED(0), CLED(1), CLED(2), CLED(3) };
for(int i=0; i<=3; i++){
if(cmd=="on")leds[i].TurnOn();
else if(cmd=="off")leds[i].TurnOff();
else if(cmd=="blink")leds[i].blink();
else{std::cout << "comando invalido" << std::endl;}
}
std::cout << "programa terminado" << std::endl;
return 0;
}
```
Se creó un archivo que se puede ejecutar para compilar, eliminar archivos antiguos de led
y para hacer un debug, este archivo se llama mkefile.
```C++
all:
g++ main.cpp -o led led.cpp
clean:
rm led
debug:
g++ -g main.cpp -o led led.cpp
```
También se puede compilar desde la terminal con el siguiente comando:
```sh
sudo g++ led.cpp -o leds
```
Finalmente para ejecutar el archivo en la Beagle Bone se utiliza el siguiente comando, en este ejemplo se le da el argumento para que los LED prenda y apague:
```sh
sudo ./leds blink
```

Loading…
Cancel
Save