Forma corretta di millis()

@Datman No intendevo dire se scrivo <= invece di >= nel if che contiene millis() questo creerà problemi con l'overflow di quest'ultimo?

Se volevi che alla chiusura di un interruttore, la funzione blink() riparta sempre dal led rosso posso fare una cosa del genere ponendo t0 = millis()? Posso far rimanere acceso il led verde anche per 2 ore senza incorrere a problematiche?

Cosi:


#define  ledrosso 7
#define  ledverde 6
#define  slidersw 8
unsigned long t0 = 0;
bool switch_sw;
void setup()
{
  pinMode(ledverde, OUTPUT);
  pinMode(ledrosso, OUTPUT);
  pinMode(slidersw, INPUT_PULLUP);

}

void loop()
{
switch_sw = digitalRead(slidersw);
  if (switch_sw == true) {
  blink();
  }
  else {
  t0 = millis();
  digitalWrite(ledrosso,LOW);
  digitalWrite(ledverde,LOW); 
  }
}

void blink() {
if(millis()-t0<=5000) {
  digitalWrite(ledrosso,HIGH);
  digitalWrite(ledverde,LOW);
}
  else {
   digitalWrite(ledrosso,LOW);
   digitalWrite(ledverde,HIGH); 
}
  if(millis()-t0>=20000) {
  t0=millis();
 }
}