class Thread {
public:
unsigned long refreshTime;
void setTask(void (*_task)());
void thread();
void setRefreshTime(unsigned long *_time){
refreshTime = _time;
}
private:
void (*userTask)();
unsigned int lastTime = 0;
class test{
};
};
void Thread::setTask(void (*_task)()){
userTask = _task;
}
/*
void Thread::setRefreshTime(){
userTask = _task;
}
*/
void Thread::thread(){
if((millis() - lastTime) >= refreshTime){
userTask();
lastTime = millis();
}
}
const byte LED_PIN = 2, LED2_PIN = 3;
Thread blinkLED, blinkLED2;
void _blinkLED (){
digitalWrite(LED_PIN, !digitalRead(LED_PIN));
//delay(200);
}
void _blinkLED2 (){
digitalWrite(LED2_PIN, !digitalRead(LED2_PIN));
//delay(500);
}
void setup() {
// put your setup code here, to run once:
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
pinMode(LED2_PIN, OUTPUT);
digitalWrite(LED2_PIN, LOW);
unsigned long n = 300, n2 = 500;
blinkLED.setTask(&_blinkLED);
blinkLED2.setTask(&_blinkLED2);
blinkLED2.setRefreshTime(n2);
blinkLED.setRefreshTime(n);
}
void loop() {
// put your main code here, to run repeatedly:
blinkLED.thread();
blinkLED2.thread();
}