This is a demo-code that shows the use of three different timers. Each with his own timer-variable where each timer has a different timePeriod
unsigned long DemoTimerA = 0; // variables that are used to store timeInformation
unsigned long DemoTimerB = 0;
unsigned long DemoTimerC = 0;
unsigned long DoDelayTimer = 0;
// easy to use helper-function for non-blocking timing
boolean TimePeriodIsOver (unsigned long &startOfPeriod, unsigned long TimePeriod) {
unsigned long currentMillis = millis();
if ( currentMillis - startOfPeriod >= TimePeriod ) {
// more time than TimePeriod has elapsed since last time if-condition was true
startOfPeriod = currentMillis; // a new period starts right here so set new starttime
return true;
}
else return false; // actual TimePeriod is NOT yet over
}
void setup() {
Serial.begin(115200);
Serial.println("Program started activate Show timestamp in serial monitor");
}
void loop() {
if ( TimePeriodIsOver(DemoTimerA,1000) ){
Serial.println(" TimerA overDue");
}
if ( TimePeriodIsOver(DemoTimerB,2000) ){
Serial.println(" TimerB overDue");
}
if ( TimePeriodIsOver(DemoTimerC,3000) ) {
Serial.println(" TimerC overDue");
}
if ( TimePeriodIsOver(DoDelayTimer,20000) ){
Serial.println("every 20 seconds execute delay(3500)... to make all other timers overdue");
delay(3500);
}
}