const int r = 2, y = 3, g = 4;
char mode, userInput;
void setup()
{
pinMode(r, OUTPUT);
pinMode(y, OUTPUT);
pinMode(g, OUTPUT);
Serial.begin(9600);
Serial.println("Automatic and Manual Traffic Control");
Serial.println("Enter: 1 for Manual");
Serial.println("Enter: 2 for Automatic");
}
void loop()
{
if (Serial.available() > 0)
{
mode = Serial.read();
switch(mode)
{
case '1':
Serial.println("Manual Mode Activated");
Serial.println("Enter 'r'/'y'/'g'/'o' for Red/ Yellow/ Green/ Turn All OFF");
while (true)
{
if (Serial.available() > 0)
{
userInput = Serial.read();
switch (userInput)
{
case 'r':
digitalWrite(r, HIGH);
digitalWrite(y, LOW);
digitalWrite(g, LOW);
Serial.println("Red ON");
break;
case 'y':
digitalWrite(r, LOW);
digitalWrite(y, HIGH);
digitalWrite(g, LOW);
Serial.println("Yellow ON");
break;
case 'g':
digitalWrite(r, LOW);
digitalWrite(y, LOW);
digitalWrite(g, HIGH);
Serial.println("Green ON");
break;
case 'o':
digitalWrite(r, LOW);
digitalWrite(y, LOW);
digitalWrite(g, LOW);
Serial.println("All Off");
break;
default:
Serial.println("'r' = Red, 'y' = Yellow, 'g' = Green, 'o' = All Off");
break;
}
}
if (Serial.available() > 0 && Serial.peek() == '1')
{
mode = Serial.read();
break;
}
}
break;
case '2':
Serial.println("Automatic Mode");
// while(true)
// {
digitalWrite(r, HIGH);
delay(1500);
digitalWrite(r, LOW);
digitalWrite(y, HIGH);
delay(1000);
digitalWrite(y, LOW);
digitalWrite(g, HIGH);
delay(1500);
digitalWrite(g, LOW);
// }
break;
default:
Serial.println("Enter '1' for Manual, '2' for Automatic");
break;
}
}
}