@ -0,0 +1,57 @@ | |||||
/*led.cpp*/ | |||||
#include"LED.h" | |||||
#include<iostream> | |||||
#include<fstream> | |||||
#include<string> | |||||
#include<sstream> | |||||
#define LED_PATH "/sys/class/leds/beaglebone:green:usr" | |||||
LED::LED(int number){ | |||||
this->number = number; | |||||
std::ostringstream s; | |||||
s << LED_PATH << number; // LED number to the Path | |||||
path = std::string(s.str()); // convert to string | |||||
} | |||||
void LED::writeLED(std::string filename, std::string value){ | |||||
std::ofstream fs; | |||||
fs.open((path + filename).c_str()); | |||||
fs << value; | |||||
fs.close(); | |||||
} | |||||
void LED::removeTrigger(){ | |||||
writeLED("/trigger", "none"); | |||||
} | |||||
void LED::turnOn(){ | |||||
std::cout << "Turning LED" << number << "on" << std::endl; | |||||
removeTrigger(); | |||||
writeLED("/brightness", "1"); | |||||
} | |||||
void LED::turnOff(){ | |||||
std::cout << "Turning LED" << number << "off" << std::endl; | |||||
removeTrigger(); | |||||
writeLED("/brightness", "0"); | |||||
} | |||||
void LED::flash(std::string delayms ="50"){ | |||||
std::cout << "Making LED" << number << "flash" << std::endl; | |||||
writeLED("/trigger", "timer"); | |||||
writeLED("/delay_on", delayms); | |||||
writeLED("/delay_off", delayms); | |||||
} | |||||
void LED::outputState(){ | |||||
std::ifstream fs; | |||||
fs.open((path + "/trigger").c_str()); | |||||
std::string line; | |||||
while(getline(fs,line)) std::cout << line <<std::endl; | |||||
fs.close(); | |||||
} | |||||
LED::~LED(){ | |||||
std::cout << "!!Destroying the LED with path: " << path << std::endl; | |||||
} |
@ -0,0 +1,25 @@ | |||||
/*led.h | |||||
Gerardo Marx April/19/2020*/ | |||||
#ifndef LED_H | |||||
#define LED_H | |||||
#include<iostream> | |||||
#include<fstream> | |||||
#include<string> | |||||
#include<sstream> | |||||
class LED{ | |||||
private: | |||||
std::string path; | |||||
int number; | |||||
virtual void writeLED(std::string filename, std::string value); | |||||
virtual void removeTrigger(); | |||||
public: | |||||
LED(int number); | |||||
virtual void turnOn(); | |||||
virtual void turnOff(); | |||||
virtual void flash(std::string delayms); | |||||
virtual void outputState(); | |||||
virtual ~LED(); | |||||
}; | |||||
#endif |
@ -0,0 +1,33 @@ | |||||
/*OOP in C++ example for LEDs | |||||
Gerardo Marx April/20/2020 | |||||
g++ main.cpp -o main LED.cpp*/ | |||||
#include<string> | |||||
#include"LED.h" | |||||
using namespace std; | |||||
int main(int argc, char* argv[]){ | |||||
if(argc!=2){ | |||||
cout << "The usage is main <command>" << endl; | |||||
cout << "<command> is on, off flash or status" << endl; | |||||
cout << "e.g. main on" << endl; | |||||
return 2; | |||||
} | |||||
cout << "Starting program ..." << endl; | |||||
string cmd(argv[1]); | |||||
LED leds[4] = {LED(0), LED(1), LED(2), LED(3)}; | |||||
for(int i=0; i<=3; i++){ | |||||
if(cmd=="on") | |||||
leds[i].turnOn(); | |||||
else if(cmd=="off") | |||||
leds[i].turnOff(); | |||||
else if(cmd=="flash") | |||||
leds[i].flash("100"); | |||||
else if(cmd=="status") | |||||
leds[i].outputState(); | |||||
else | |||||
cout << "invalid command, please type main" << endl; | |||||
} | |||||
cout << "Program done, Thanks." << endl; | |||||
return 0; | |||||
} |