int Lane1[] = {13, 12, 11}; // Lane 1 Red, Yellow and Green
int Lane2[] = {10, 9, 8}; // Lane 2 Red, Yellow and Green
int Lane3[] = {7, 6, 5}; // Lane 3 Red, Yellow and Green
int Lane4[] = {4, 3, 2}; // Lane 4 Red, Yellow and Green
String lanes ; // Input word
void setup()
{
Serial.begin(9600); // Initialize serial communication
for (int i = 0; i < 3; i++)
{
pinMode(Lane1[i], OUTPUT);
pinMode(Lane2[i], OUTPUT);
pinMode(Lane3[i], OUTPUT);
pinMode(Lane4[i], OUTPUT);
}
for (int i = 0; i < 3; i++)
{
digitalWrite(Lane1[i], LOW);
digitalWrite(Lane2[i], LOW);
digitalWrite(Lane3[i], LOW);
digitalWrite(Lane4[i], LOW);
}
}
void loop()
{
lanes = "v1";
if (lanes == "v1")
{
digitalWrite(Lane1[2], HIGH); // Green light for Lane 1
digitalWrite(Lane3[0], HIGH); // Red light for Lane 3
digitalWrite(Lane4[0], HIGH); // Red light for Lane 4
digitalWrite(Lane2[0], HIGH); // Red light for Lane 2
delay(10000); // Green light duration for Lane 1
digitalWrite(Lane1[2], LOW);
digitalWrite(Lane2[0], LOW);
digitalWrite(Lane2[1], HIGH);
digitalWrite(Lane1[1], HIGH);
delay(3000);
digitalWrite(Lane2[1], LOW);
digitalWrite(Lane1[1], LOW);
digitalWrite(Lane1[0], HIGH);
digitalWrite(Lane2[2], HIGH);
delay(7000);
digitalWrite(Lane2[2], LOW);
digitalWrite(Lane3[0], LOW);
digitalWrite(Lane3[1], HIGH);
digitalWrite(Lane2[1], HIGH);
delay(3000);
digitalWrite(Lane3[1], LOW);
digitalWrite(Lane2[1], LOW);
digitalWrite(Lane3[2], HIGH);
digitalWrite(Lane2[0], HIGH);
delay(7000);
digitalWrite(Lane3[2], LOW);
digitalWrite(Lane4[0], LOW);
digitalWrite(Lane4[1], HIGH);
digitalWrite(Lane3[1], HIGH);
delay(3000);
digitalWrite(Lane4[1], LOW);
digitalWrite(Lane3[1], LOW);
digitalWrite(Lane4[2], HIGH);
digitalWrite(Lane3[0], HIGH);
delay(7000);
digitalWrite(Lane4[2], LOW);
digitalWrite(Lane1[0], LOW);
digitalWrite(Lane1[1], HIGH);
digitalWrite(Lane4[1], HIGH);
delay(3000);
digitalWrite(Lane4[1], LOW);
digitalWrite(Lane1[1], LOW);
digitalWrite(Lane2[0], HIGH);
digitalWrite(Lane1[0], HIGH);
digitalWrite(Lane3[0], HIGH);
digitalWrite(Lane4[0], HIGH);
}
else if (lanes == "v2")
{
digitalWrite(Lane1[2], HIGH); // Green light for Lane 1
digitalWrite(Lane3[0], HIGH); // Red light for Lane 3
digitalWrite(Lane4[0], HIGH); // Red light for Lane 4
digitalWrite(Lane2[0], HIGH); // Red light for Lane 2
delay(7000); // Green light duration for Lane 1
digitalWrite(Lane1[2], LOW);
digitalWrite(Lane2[0], LOW);
digitalWrite(Lane2[1], HIGH);
digitalWrite(Lane1[1], HIGH);
delay(3000);
digitalWrite(Lane2[1], LOW);
digitalWrite(Lane1[1], LOW);
digitalWrite(Lane1[0], HIGH);
digitalWrite(Lane2[2], HIGH);
delay(10000);
digitalWrite(Lane2[2], LOW);
digitalWrite(Lane3[0], LOW);
digitalWrite(Lane3[1], HIGH);
digitalWrite(Lane2[1], HIGH);
delay(3000);
digitalWrite(Lane3[1], LOW);
digitalWrite(Lane2[1], LOW);
digitalWrite(Lane3[2], HIGH);
digitalWrite(Lane2[0], HIGH);
delay(7000);
digitalWrite(Lane3[2], LOW);
digitalWrite(Lane4[0], LOW);
digitalWrite(Lane4[1], HIGH);
digitalWrite(Lane3[1], HIGH);
delay(3000);
digitalWrite(Lane4[1], LOW);
digitalWrite(Lane3[1], LOW);
digitalWrite(Lane4[2], HIGH);
digitalWrite(Lane3[0], HIGH);
delay(7000);
digitalWrite(Lane4[2], LOW);
digitalWrite(Lane1[0], LOW);
digitalWrite(Lane1[1], HIGH);
digitalWrite(Lane4[1], HIGH);
delay(3000);
digitalWrite(Lane4[1], LOW);
digitalWrite(Lane1[1], LOW);
digitalWrite(Lane2[0], HIGH);
digitalWrite(Lane1[0], HIGH);
digitalWrite(Lane3[0], HIGH);
digitalWrite(Lane4[0], HIGH);
}
else if (lanes == "v3")
{
digitalWrite(Lane1[2], HIGH); // Green light for Lane 1
digitalWrite(Lane3[0], HIGH); // Red light for Lane 3
digitalWrite(Lane4[0], HIGH); // Red light for Lane 4
digitalWrite(Lane2[0], HIGH); // Red light for Lane 2
delay(7000); // Green light duration for Lane 1
digitalWrite(Lane1[2], LOW);
digitalWrite(Lane2[0], LOW);
digitalWrite(Lane2[1], HIGH);
digitalWrite(Lane1[1], HIGH);
delay(3000);
digitalWrite(Lane2[1], LOW);
digitalWrite(Lane1[1], LOW);
digitalWrite(Lane1[0], HIGH);
digitalWrite(Lane2[2], HIGH);
delay(7000);
digitalWrite(Lane2[2], LOW);
digitalWrite(Lane3[0], LOW);
digitalWrite(Lane3[1], HIGH);
digitalWrite(Lane2[1], HIGH);
delay(3000);
digitalWrite(Lane3[1], LOW);
digitalWrite(Lane2[1], LOW);
digitalWrite(Lane3[2], HIGH);
digitalWrite(Lane2[0], HIGH);
delay(10000);
digitalWrite(Lane3[2], LOW);
digitalWrite(Lane4[0], LOW);
digitalWrite(Lane4[1], HIGH);
digitalWrite(Lane3[1], HIGH);
delay(3000);
digitalWrite(Lane4[1], LOW);
digitalWrite(Lane3[1], LOW);
digitalWrite(Lane4[2], HIGH);
digitalWrite(Lane3[0], HIGH);
delay(7000);
digitalWrite(Lane4[2], LOW);
digitalWrite(Lane1[0], LOW);
digitalWrite(Lane1[1], HIGH);
digitalWrite(Lane4[1], HIGH);
delay(3000);
digitalWrite(Lane4[1], LOW);
digitalWrite(Lane1[1], LOW);
digitalWrite(Lane2[0], HIGH);
digitalWrite(Lane1[0], HIGH);
digitalWrite(Lane3[0], HIGH);
digitalWrite(Lane4[0], HIGH);
}
else if (lanes == "v4")
{
digitalWrite(Lane1[2], HIGH); // Green light for Lane 1
digitalWrite(Lane3[0], HIGH); // Red light for Lane 3
digitalWrite(Lane4[0], HIGH); // Red light for Lane 4
digitalWrite(Lane2[0], HIGH); // Red light for Lane 2
delay(7000); // Green light duration for Lane 1
digitalWrite(Lane1[2], LOW);
digitalWrite(Lane2[0], LOW);
digitalWrite(Lane2[1], HIGH);
digitalWrite(Lane1[1], HIGH);
delay(3000);
digitalWrite(Lane2[1], LOW);
digitalWrite(Lane1[1], LOW);
digitalWrite(Lane1[0], HIGH);
digitalWrite(Lane2[2], HIGH);
delay(7000);
digitalWrite(Lane2[2], LOW);
digitalWrite(Lane3[0], LOW);
digitalWrite(Lane3[1], HIGH);
digitalWrite(Lane2[1], HIGH);
delay(3000);
digitalWrite(Lane3[1], LOW);
digitalWrite(Lane2[1], LOW);
digitalWrite(Lane3[2], HIGH);
digitalWrite(Lane2[0], HIGH);
delay(7000);
digitalWrite(Lane3[2], LOW);
digitalWrite(Lane4[0], LOW);
digitalWrite(Lane4[1], HIGH);
digitalWrite(Lane3[1], HIGH);
delay(3000);
digitalWrite(Lane4[1], LOW);
digitalWrite(Lane3[1], LOW);
digitalWrite(Lane4[2], HIGH);
digitalWrite(Lane3[0], HIGH);
delay(10000);
digitalWrite(Lane4[2], LOW);
digitalWrite(Lane1[0], LOW);
digitalWrite(Lane1[1], HIGH);
digitalWrite(Lane4[1], HIGH);
delay(3000);
digitalWrite(Lane4[1], LOW);
digitalWrite(Lane1[1], LOW);
digitalWrite(Lane2[0], HIGH);
digitalWrite(Lane1[0], HIGH);
digitalWrite(Lane3[0], HIGH);
digitalWrite(Lane4[0], HIGH);
}
else
{
// Default behavior without any input
digitalWrite(Lane1[2], HIGH); // Green light for Lane 1
digitalWrite(Lane3[0], HIGH); // Red light for Lane 3
digitalWrite(Lane4[0], HIGH); // Red light for Lane 4
digitalWrite(Lane2[0], HIGH); // Red light for Lane 2
delay(7000); // Green light duration for Lane 1
digitalWrite(Lane1[2], LOW);
digitalWrite(Lane2[0], LOW);
digitalWrite(Lane2[1], HIGH);
digitalWrite(Lane1[1], HIGH);
delay(3000);
digitalWrite(Lane2[1], LOW);
digitalWrite(Lane1[1], LOW);
digitalWrite(Lane1[0], HIGH);
digitalWrite(Lane2[2], HIGH);
delay(7000);
digitalWrite(Lane2[2], LOW);
digitalWrite(Lane3[0], LOW);
digitalWrite(Lane3[1], HIGH);
digitalWrite(Lane2[1], HIGH);
delay(3000);
digitalWrite(Lane3[1], LOW);
digitalWrite(Lane2[1], LOW);
digitalWrite(Lane3[2], HIGH);
digitalWrite(Lane2[0], HIGH);
delay(7000);
digitalWrite(Lane3[2], LOW);
digitalWrite(Lane4[0], LOW);
digitalWrite(Lane4[1], HIGH);
digitalWrite(Lane3[1], HIGH);
delay(3000);
digitalWrite(Lane4[1], LOW);
digitalWrite(Lane3[1], LOW);
digitalWrite(Lane4[2], HIGH);
digitalWrite(Lane3[0], HIGH);
delay(7000);
digitalWrite(Lane4[2], LOW);
digitalWrite(Lane1[0], LOW);
digitalWrite(Lane1[1], HIGH);
digitalWrite(Lane4[1], HIGH);
delay(3000);
digitalWrite(Lane4[1], LOW);
digitalWrite(Lane1[1], LOW);
}
}