reset des millis() Wertes

Doch, das hilft Dir schon.
Dein(millis() - uptime)entspricht ja meinem millis() - previousMillis. Und da ja wegen "unsigned long" keine negativen Werte entstehen passt es auch trotz Überlauf.

Beispiel:
Gehen wir mal davon aus, dass der aktuelle millis Wert 4294967290 entspricht (also kurz vor dem Überlauf).
Sagen wir weiterhin, uptime wurde kurz vorher gesetzt und steht auf 4294967280.

Dann zählen wir millis mal hoch und prüfen das Ergebnis beim Überlauf (Ergebnis = millis() - uptime):

4294967290 - 4294967280 = 10
4294967291 - 4294967280 = 11
4294967292 - 4294967280 = 12
4294967293 - 4294967280 = 13
4294967294 - 4294967280 = 14
4294967295 - 4294967280 = 15 (jetzt kommt der Überlauf)
         0 - 4294967280 = 16
         1 - 4294967280 = 17
         2 - 4294967280 = 18
         3 - 4294967280 = 19

Wie Du siehst, passiert kein "Blödsinn".

1 Like