My goal in pseudo code is :
only LED-6 HIGH for 6 seconds, then only LED-7 HIGH for 2 seconds, then only LED-8 HIGH for 4 seconds, then restart
This is very easy with delay(), but I struggle with millis(). Here is my code. Only led 7 and 8 blinks.
unsigned long currentTime;
unsigned long previousTime1 = 0;
unsigned long previousTime2 = 0;
unsigned long previousTime3 = 0;
unsigned long interval1 = 6000;
unsigned long interval2 = 2000;
unsigned long interval3 = 4000;
void setup() {
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
}
void loop() {
currentTime = millis();
if (currentTime - previousTime1 >= interval1){
previousTime1 = currentTime;
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
}
if (currentTime - previousTime2 >= interval2){
previousTime2 = currentTime;
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
}
if (currentTime - previousTime3 >= interval3){
previousTime3 = currentTime;
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
}
}