Hi! I have a question regarding blink without delay code:
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);
}
}
Why is millis() function saved in currentMillis variable before and not used directly? when I do this, I have erratic led toggles.
What does that mean?- you mean it doesn't always toggle as expected? In that case BulldogLowell is likely yo be right: delays elsewhere are active when you expect a toggle.
But this...
Why is millis() function saved in currentMillis variable before and not used directly? when I do this, I have erratic led toggles.
....makes it sound as if you don't get the problem when you don't set currentMillis to millis()?
This is what starts/resets the timing sequence, it needs to be within a conditional statement
otherwise this: if(currentMillis - previousMillis >6000)
will always be true after the first 6 seconds