Hello, I am working on simulating 2 traffic and crosswalk light patterns at a 2 way intersection
using the Sparkfun inventor's kit. This is my first time using millis() and am not sure if it is being used correctly or not. Especially the "if ((unsigned long)(currentMillis - previousMillis) >= interval) {
previousMillis = currentMillis;}" part. When I run the code on my Arduino/breadboard setup it only runs the code through once.
Any help, tips or guidance would be much appreciated!
#define LEDr1 12
#define LEDy1 11
#define LEDg1 10
#define LEDo1 9
#define LEDw1 8
#define LEDr2 7
#define LEDy2 6
#define LEDg2 5
#define LEDo2 4
#define LEDw2 3
int interval=25000; //25sec
unsigned long previousMillis=0;
void setup() {
pinMode(LEDg1, OUTPUT);
pinMode(LEDy1, OUTPUT);
pinMode(LEDr1, OUTPUT);
pinMode(LEDw1, OUTPUT);
pinMode(LEDo1, OUTPUT);
pinMode(LEDg2, OUTPUT);
pinMode(LEDy2, OUTPUT);
pinMode(LEDr2, OUTPUT);
pinMode(LEDw2, OUTPUT);
pinMode(LEDo2, OUTPUT);
Serial.begin(9600);
}
void loop() {
unsigned long currentMillis = millis();
Serial.println (millis());
if(millis() > 10){
digitalWrite(LEDr1,HIGH); //red 1 on
}
if(millis() > 10){
digitalWrite(LEDw1,HIGH); //white 1 on
}
if(millis() > 10){
digitalWrite(LEDg2,HIGH); //green 2 on
}
if(millis() > 10){
digitalWrite(LEDo2,HIGH); //orange 2 on
}
if(millis() > 8000){
digitalWrite(LEDw1,LOW); // white 1 off
}
if(millis() > 8000){
digitalWrite(LEDo1,HIGH); //orange 1 blink start
}
if(millis() > 8500){
digitalWrite(LEDo1,LOW);
}
if(millis() > 9000){
digitalWrite(LEDo1,HIGH);
}
if(millis() > 9000){
digitalWrite(LEDg2,LOW); //green 2 off
}
if(millis() > 9000){
digitalWrite(LEDy2,HIGH); //yellow 2 on
}
if(millis() > 9500){
digitalWrite(LEDo1,LOW);
}
if(millis() > 10000){
digitalWrite(LEDo1,HIGH);
}
if(millis() > 10500){
digitalWrite(LEDo1,LOW);
}
if(millis() > 11000){
digitalWrite(LEDo1,HIGH);
}
if(millis() > 11500){
digitalWrite(LEDo1,LOW);
}
if(millis() > 12000){
digitalWrite(LEDo1,HIGH); //orange 1 blink stop; orange 1 on
}
if(millis() > 13000){
digitalWrite(LEDr1,LOW); //red 1 off
}
if(millis() > 13000){
digitalWrite(LEDg1,HIGH); //green 1 on
}
if(millis() > 13000){
digitalWrite(LEDy2,LOW); //yellow 2 off
}
if(millis() > 13000){
digitalWrite(LEDr2,HIGH); //red 2 on
}
if(millis() > 13000){
digitalWrite(LEDo2,LOW); //orange 2 off
}
if(millis() > 13000){
digitalWrite(LEDw2,HIGH); //white 2 on
}
if(millis() > 21000){
digitalWrite(LEDw2,LOW); //white 2 off
}
if(millis() > 21000){
digitalWrite(LEDo2,HIGH); //orange 2 blink start
}
if(millis() > 21500){
digitalWrite(LEDo2,LOW);
}
if(millis() > 22000){
digitalWrite(LEDo2,HIGH);
}
if(millis() > 22500){
digitalWrite(LEDo2,LOW);
}
if(millis() > 23000){
digitalWrite(LEDo2,HIGH);
}
if(millis() > 23500){
digitalWrite(LEDo2,LOW);
}
if(millis() > 24000){
digitalWrite(LEDo2,HIGH);
}
if(millis() > 24500){
digitalWrite(LEDo2,LOW);
}
if(millis() > 25000){
digitalWrite(LEDo1,HIGH); //orange 2 blink stop; orange 2 on
}
if(millis() > 21000){
digitalWrite(LEDg1,LOW); //green 1 off
}
if(millis() > 21000){
digitalWrite(LEDy1,HIGH); //yellow 1 on
}
if(millis() > 25000){
digitalWrite(LEDy1,LOW); //yellow 1 off
}
if(millis() > 25000){
digitalWrite(LEDo1,LOW); //orange 2 off
}
if(millis() > 25000){
digitalWrite(LEDr2,LOW); //red 2 off
}
if ((unsigned long)(currentMillis - previousMillis) >= interval) {
previousMillis = currentMillis;
}
}