I'm trying to make a light simulation where when one switch it hit, it causes the other light to sequence to red- making the light where the switch is located to turn green
if someone was to run the red light, I want the "police lights" to turn on. How I have it rigged is that if the one switch is hit (which turns the opposing light red) and then another switch after it is hit (meaning the car is running the red light) it should turn the police lights on.
Right now, I can't get any interrupt functions to work, as once the first button is pressed it starts the sequence of turning the opposing light red-- and does not allow the 2nd switch to be noticed..
int PoliceRed = 13;
int Yellow1 = 12;
int Green1 = 11;
int Green2 = 10;
int Yellow2 = 9;
int Red2 = 8;
int Red1 = 7;
int PoliceBlue = 5;
int ButtonStop = 3;
int ButtonRun = 2;
void setup()
{ pinMode(Red1, OUTPUT);
pinMode(Green1, OUTPUT);
pinMode(Yellow1, OUTPUT);
pinMode(ButtonStop, INPUT);
pinMode(Red2, OUTPUT);
pinMode(Yellow2, OUTPUT);
pinMode(Green2, OUTPUT);
pinMode(ButtonRun, INPUT);
pinMode(PoliceRed, OUTPUT);
pinMode(PoliceBlue, OUTPUT);
}
void loop(){
noInterrupts();
delay(1000);
if (digitalRead(ButtonStop)==LOW)
{delay(100000);
digitalWrite(Green1, LOW);
digitalWrite(Yellow1, HIGH);
delay(100000);
digitalWrite(Yellow1, LOW);
digitalWrite(Red1, HIGH);
digitalWrite(Yellow2, LOW);
delay(100000);
digitalWrite(Green2, HIGH);
digitalWrite(Red2, LOW);
delay(100000);
digitalWrite(Green2, LOW);
digitalWrite(Yellow2, HIGH);
delay(100000);
digitalWrite(Yellow2, LOW);
digitalWrite(Red2, HIGH);
digitalWrite(Yellow1, LOW);
delay(100000);
digitalWrite(Green1, HIGH);
digitalWrite(Red1, LOW);
digitalWrite(Green2, LOW);
digitalWrite(Yellow2, LOW);
delay(100000);
digitalWrite(Green1, HIGH);}
if (digitalRead(ButtonStop) == HIGH)
{ digitalWrite(Red2, HIGH);
digitalWrite(Yellow2, LOW);
digitalWrite(Green2, LOW);
digitalWrite(Green1, HIGH);
digitalWrite(Red1, LOW);
digitalWrite(Yellow1, LOW);
}
interrupts();
if (digitalRead(ButtonRun)==LOW)
{
digitalWrite(PoliceRed, HIGH);
digitalWrite(PoliceBlue,LOW);
delay(200);
digitalWrite(PoliceRed, LOW);
digitalWrite(PoliceBlue, HIGH);
delay(200);
digitalWrite(PoliceRed, HIGH);
digitalWrite(PoliceBlue, LOW);
delay(200);
digitalWrite(PoliceRed, LOW);
digitalWrite(PoliceBlue, HIGH);
delay(200);
digitalWrite(PoliceRed, HIGH);
digitalWrite(PoliceBlue, LOW);
delay(200);
digitalWrite(PoliceRed, LOW);
digitalWrite(PoliceBlue, HIGH);
delay(200);
digitalWrite(PoliceRed, HIGH);
digitalWrite(PoliceBlue, LOW);
delay(200);
digitalWrite(PoliceRed, LOW);
digitalWrite(PoliceBlue, HIGH);
delay(200);
digitalWrite(PoliceRed, HIGH);
digitalWrite(PoliceBlue, LOW);
delay(200);
digitalWrite(PoliceRed, LOW);
digitalWrite(PoliceBlue, HIGH);
delay(200);
digitalWrite(PoliceRed, HIGH);
digitalWrite(PoliceBlue, LOW);
delay(200);
digitalWrite(PoliceRed, LOW);
digitalWrite(PoliceBlue, HIGH);
delay(200);
digitalWrite(PoliceRed, HIGH);
digitalWrite(PoliceBlue, LOW);
delay(200);
digitalWrite(PoliceRed, LOW);
digitalWrite(PoliceBlue, HIGH);
delay(200);
digitalWrite(PoliceRed, HIGH);
digitalWrite(PoliceBlue, LOW);
delay(200);
digitalWrite(PoliceRed, LOW);
digitalWrite(PoliceBlue, HIGH);
delay(200);
digitalWrite(PoliceRed, HIGH);
digitalWrite(PoliceBlue, LOW);
delay(200);
digitalWrite(PoliceRed, LOW);
digitalWrite(PoliceBlue, HIGH);
delay(200);
digitalWrite(PoliceRed, HIGH);
digitalWrite(PoliceBlue, LOW);
delay(200);
digitalWrite(PoliceRed, LOW);}
}