```cpp
/*
Programm Einfache Timerklasse
Name Jörg ter Veen
Kontakt joerg.ter.veen@icloud.com
Datum 13.03.2024
Version 1.1.0.4
Danke an das Arduino-Forum mit unterstützung von:
- noiasca
- Kai-R
- MicroBahner
- combie
*/
class TTimer {
private:
unsigned long period;
unsigned long startTime;
bool activ = false;
using action = void (*)();
action func{nullptr};
public:
void start(){ // Timer starten
activ = true;
startTime = millis();
}
void stop(){ // Timer Stoppen
activ = false;
}
void setTOcallback(action val){ // Funktion übergeben die aufgerufen werden soll
func = val;
}
void setInterval(unsigned long val){ // Intervall der Timer
period = val;
}
void update(){
if ((activ)&&(func)){ // Nur nach kompletter integration
if (millis() - startTime >= period) {
startTime = millis();
func(); // hier Function aufrufen
}
}
}
};
bool toggle;
TTimer myTimer;
const byte ledPin = 7;
void setup() {
pinMode(ledPin, OUTPUT);
myTimer.setInterval(1000);
myTimer.setTOcallback(blinken);
myTimer.start();
}
void loop() {
myTimer.update();
}
void blinken(){
toggle = !toggle;
digitalWrite(ledPin, toggle);
}