Timer ohne Überlauf
Timer ohne Überlauf
Für Arduino
#include "./Timer.h"
Timer::Timer(){ setInterval(0);
}
Timer::Timer(void* ee){ int ee_int = (int)ee;
ee_addr = (ee_int>=0 && ee_int<EEPROM.length()) ? ee_int : -1;
unsigned long value = 0;
if(ee_addr>=0) EEPROM_readAnything(ee_addr, value);
setInterval(value);
}
Timer::Timer(unsigned long value){ setInterval(value);
}
void Timer::setInterval(unsigned long value){
ul_Interval = value;
if(ee_addr>=0) EEPROM_writeAnything(ee_addr, ul_Interval);
}
unsigned long Timer::getInterval(void){
return ul_Interval;
}
boolean Timer::check(){
if(millis()-ul_PreviousMillis <= ul_Interval)
return false;
ul_PreviousMillis += ul_Interval;
return true;
}
#ifndef TIMER_H
#define TIMER_H
#include "Arduino.h"
#include <EEPROM.h> #include "./EEPROMAnything.h"
#define TIMER_SECONDS 1000
#define TIMER_MINUTES TIMER_SECONDS*60
#define TIMER_HOURS TIMER_MINUTES*60
class Timer{
public:
Timer(void); Timer(void* ee); Timer(unsigned long value); void setInterval(unsigned long value); unsigned long getInterval(void); boolean check(void);
private:
unsigned long ul_PreviousMillis;
unsigned long ul_Interval;
int ee_addr = -1;
};
#endif