I am obviously missing something here, what would happen if:
- at 50+ days millis() will return,lets say 0
- lets say previousMillis was 4,294,967,295
- long interval = 1000
So:
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) { // if ( 0 - 4,294,967,295 > 1000);
? when will this be true ?
millis() Description
Returns the number of milliseconds since the Arduino board began running the current program. This number will overflow (go back to zero), after approximately 50 days.
Blink Without Delay
void loop()
{
// here is where you'd put code that needs to be running all the time.
// check to see if it's time to blink the LED; that is, if the
// difference between the current time and last time you blinked
// the LED is bigger than the interval at which you want to
// blink the LED.
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;
// if the LED is off turn it on and vice-versa:
if (ledState == LOW)
ledState = HIGH;
else
ledState = LOW;
// set the LED with the ledState of the variable:
digitalWrite(ledPin, ledState);
}
}