Hello, I am working on a four directional traffic light system. The problem I am struggling to fix is the 1st push button (Maintenance button). It is supposed to turn all LEDS in each direction red, than green for an interval of 1.5 seconds. I pushed the button at simulation time 00:14:00 (14 seconds) and it started going red and green at a delayed 20 seconds which should not be happening. Also, sometimes during the red and green phase, it turns yellow... I don't know why this is. After I let go of the button, the lights keep flickering red and green for a little while and don't resume to their regular pattern.
Traffic light system <------ LINK TO VIDEO
Code:
int thispin;
int lopin=2;
int hipin=13;
int elo=2;
int emed=3;
int ehi=4;
int slo=5;
int smed=6;
int shi=7;
int nlo=8;
int nmed=9;
int nhi=10;
int wlo=11;
int wmed=12;
int whi=13;
int voltageValue;
void setup()
{
for (thispin=lopin; thispin<=hipin; thispin++)
{pinMode (thispin, OUTPUT);
Serial.begin (1000);
}}
void cycleOne()
{
digitalWrite (nhi, HIGH);
digitalWrite (shi, HIGH);
digitalWrite (elo, HIGH);
digitalWrite (wlo, HIGH);
delay (4000);
digitalWrite (elo, LOW);
digitalWrite (wlo, LOW);
}
void cycleTwo()
{
digitalWrite (emed, HIGH);
digitalWrite (wmed, HIGH);
delay (1000);
digitalWrite (emed, LOW);
digitalWrite (wmed, LOW);
}
void cycleThree()
{
digitalWrite (ehi, HIGH);
digitalWrite (whi, HIGH);
delay (1000);
}
void cycleFour()
{
digitalWrite (nhi, LOW);
digitalWrite (shi, LOW);
digitalWrite (nlo, HIGH);
digitalWrite (slo, HIGH);
delay (4000);
digitalWrite (nlo, LOW);
digitalWrite (slo, LOW);
}
void cycleFive()
{
digitalWrite (nmed, HIGH);
digitalWrite (smed, HIGH);
delay (1000);
digitalWrite (nmed, LOW);
digitalWrite (smed, LOW);
}
void cycleSix()
{
digitalWrite (nhi, HIGH);
digitalWrite (shi, HIGH);
delay (1000);
digitalWrite (ehi, LOW);
digitalWrite (whi, LOW);
}
void cycleMaintenance()
{
if (voltageValue==804) {
digitalWrite (nlo, LOW);
digitalWrite (slo, LOW);
digitalWrite (elo, LOW);
digitalWrite (wlo, LOW);
digitalWrite (nmed, LOW);
digitalWrite (smed, LOW);
digitalWrite (emed, LOW);
digitalWrite (wmed, LOW);
digitalWrite (nhi, HIGH);
digitalWrite (shi, HIGH);
digitalWrite (ehi, HIGH);
digitalWrite (whi, HIGH);
delay (1500);
digitalWrite (nhi, LOW);
digitalWrite (shi, LOW);
digitalWrite (ehi, LOW);
digitalWrite (whi, LOW);
digitalWrite (nlo, HIGH);
digitalWrite (slo, HIGH);
digitalWrite (elo, HIGH);
digitalWrite (wlo, HIGH);
delay (1500);}
}
void loop()
{
voltageValue = analogRead(A5);
cycleOne();
cycleMaintenance();
cycleTwo();
cycleMaintenance();
cycleThree();
cycleMaintenance();
cycleFour();
cycleMaintenance();
cycleFive();
cycleMaintenance();
cycleSix();
cycleMaintenance();
}