Verständnisfrage zu Modulo und der zeitlichen Ausgabe einer "Aktion"

Chris72622:
Wenn Modulo "0" ist, weil z.B. 1000ms vergangen sind, wird dann so lange der auszuführende Code ausgeführt, bis Modulo nicht mehr "0" ergibt?

Eine if-Abfrage wird nur einmal ausgeführt.

Generell macht man das so (jedenfalls in der Loop):

unsigned long previousMillis = 0; 

void loop()
{
  unsigned long currentMillis = millis();
 
  if(currentMillis - previousMillis > 1000) 
  {
       previousMillis = currentMillis;
       
      ....
  }
}

Der Code von jurs in deinem Thread ist eine Abwandlung davon, weil es statt dessen in einer Funktion gemacht wird und man den Wert der Sekunden speichern will. "millis()/1000" inkrementiert jede Sekunde. Wenn sich dieser Wert ändert ist also eine Sekunde vergangen.

Ansonsten ist es das gleiche Prinzip: Zeit einlesen -> mit alter Zeit vergleichen -> wenn Intervall abgelaufen ist, alter Zeit die neue Zeit zuweisen

Die Modulo-Divsion darin ist dazu da um auf gerade und ungerade Zahlen abzufragen