Hello everyone I was working on the traffic light system for the Arduino uno board and I having trouble with my Main Street button I got the Side to work so that when it's pressed it changes the light and then goes back to the default state of main street green side street red, but I can't get it so that when the main street button is pressed it will go back to side street being red and main street green. Here is my code so far.
#define MainStreetButton 7
#define SideStreetButton 13
#define SideStreetRed 4
#define SideStreetYellow 3
#define SideStreetGreen 2
#define MainStreetRed 12
#define MainStreetYellow 11
#define MainStreetGreen 10
boolean trafficMainStreet = true; // MainStreet = true, SideStreet = false
int flowTime = 15000; // traffic passing time (15000 = 30 seconds)
int changeDelay = 2000; // color change time (2000 = 4 seconds)
int ssflowTime = 2000; // traffic passing time (2000 = 4 seconds)
void setup(){
pinMode(MainStreetButton, INPUT);
pinMode(SideStreetButton, INPUT);
pinMode(MainStreetRed, OUTPUT);
pinMode(MainStreetYellow, OUTPUT);
pinMode(MainStreetGreen, OUTPUT);
pinMode(SideStreetRed, OUTPUT);
pinMode(SideStreetYellow, OUTPUT);
pinMode(SideStreetGreen, OUTPUT);
//MainStreet side starts with green first
digitalWrite(MainStreetRed, LOW);
digitalWrite(MainStreetYellow, LOW);
digitalWrite(MainStreetGreen, HIGH);
digitalWrite(SideStreetRed, HIGH);
digitalWrite(SideStreetYellow, LOW);
digitalWrite(SideStreetGreen, LOW);
}
void loop()
{
if (digitalRead(MainStreetButton) == HIGH ) {
if ( trafficMainStreet != true ) {
trafficMainStreet = true;
delay(ssflowTime);
digitalWrite(SideStreetGreen, LOW);
digitalWrite(SideStreetYellow, HIGH);
delay(changeDelay);
digitalWrite(SideStreetYellow, LOW);
digitalWrite(SideStreetRed, HIGH);
delay(changeDelay);
digitalWrite(MainStreetYellow, LOW);
digitalWrite(MainStreetRed, LOW);
digitalWrite(MainStreetGreen, HIGH);
}
}
else if(digitalRead(MainStreetButton) == LOW ){
if ( trafficMainStreet != true ) {
trafficMainStreet = true;
delay(flowTime);
digitalWrite(SideStreetGreen, LOW);
digitalWrite(SideStreetYellow, HIGH);
delay(changeDelay);
digitalWrite(SideStreetYellow, LOW);
digitalWrite(SideStreetRed, HIGH);
delay(changeDelay);
digitalWrite(MainStreetYellow, LOW);
digitalWrite(MainStreetRed, LOW);
digitalWrite(MainStreetGreen, HIGH);
}
}
if ( digitalRead(SideStreetButton) == HIGH ) {
if ( trafficMainStreet == true ) {
trafficMainStreet = false;
delay(flowTime);
digitalWrite(MainStreetGreen, LOW);
digitalWrite(MainStreetYellow, HIGH);
delay(changeDelay);
digitalWrite(MainStreetYellow, LOW);
digitalWrite(MainStreetRed, HIGH);
delay(changeDelay);
digitalWrite(SideStreetYellow, LOW);
digitalWrite(SideStreetRed, LOW);
digitalWrite(SideStreetGreen, HIGH);
delay(flowTime);
}
}
}