void setup() {
Serial.begin(115200);
Serial.println("Setup-Start");
unsigned long StartTime = 1;
Serial.print("StartTime = ");
Serial.println(StartTime);
unsigned long StopTime = 5; // simulating beeing just after the rollover
Serial.print("StopTime = ");
Serial.println(StopTime);
unsigned long TimeDifference = StopTime - StartTime;
Serial.println("TimeDifference = StopTime - StartTime");
Serial.print("TimeDifference = ");
Serial.print(StopTime);
Serial.print(" - ");
Serial.print(StartTime);
Serial.print(" = ");
Serial.println(TimeDifference);
StopTime = 1; // simulating beeing just after the rollover
Serial.print("StopTime = ");
Serial.println(StopTime);
StartTime = StopTime - TimeDifference; // result is a very large number simulating beeing near of a rollover
Serial.println("StartTime = StopTime - TimeDifference;");
Serial.print("StartTime = ");
Serial.print(StopTime);
Serial.print(" - ");
Serial.print(TimeDifference);
Serial.print(" = ");
Serial.print(StartTime);
Serial.println(" very big number simulating millis() short before rollover");
Serial.println();
Serial.println();
Serial.println();
TimeDifference = StopTime - StartTime; // still a small number because of unsigned integer-math
Serial.println("TimeDifference = StopTime - StartTime");
Serial.println("TimeDifference = small number (after rollover) - big number before rollover");
Serial.print("TimeDifference = ");
Serial.print(StopTime);
Serial.print(" - ");
Serial.print(StartTime);
Serial.print(" = ");
Serial.print(TimeDifference);
Serial.println(" still the correct result ");
Serial.print(" same difference ");
Serial.println(TimeDifference);
}
void loop() {
}