const int IR_SENSOR_PIN_1 = 2;
const int IR_SENSOR_PIN_2 = 6;
const int PHOTO_RESISTOR_PIN = A0;
const int RED_LED_PIN = 3;
const int YELLOW_LED_PIN = 4;
const int GREEN_LED_PIN = 5;
const int TIMEOUT = 5000; // 5 seconds timeout for each traffic light state
void setup() {
pinMode(IR_SENSOR_PIN_1, INPUT);
pinMode(IR_SENSOR_PIN_2, INPUT);
pinMode(PHOTO_RESISTOR_PIN, INPUT);
pinMode(RED_LED_PIN, OUTPUT);
pinMode(YELLOW_LED_PIN, OUTPUT);
pinMode(GREEN_LED_PIN, OUTPUT);
Serial.begin(9600);
}
void loop() {
int sensorValue1 = digitalRead(IR_SENSOR_PIN_1);
int sensorValue2 = digitalRead(IR_SENSOR_PIN_2);
int photoValue = analogRead(PHOTO_RESISTOR_PIN);
if (sensorValue1 == HIGH || sensorValue2 == HIGH) { // vehicle detected
Serial.println("Vehicle detected!");
greenLight();
} else { // no vehicle detected
Serial.println("No vehicle detected.");
if (photoValue > 500) {
greenLight();
} else {
redLight();
}
}
}
void redLight() {
digitalWrite(RED_LED_PIN, HIGH);
digitalWrite(YELLOW_LED_PIN, LOW);
digitalWrite(GREEN_LED_PIN, LOW);
delay(TIMEOUT);
}
void greenLight() {
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(YELLOW_LED_PIN, LOW);
digitalWrite(GREEN_LED_PIN, HIGH);
delay(TIMEOUT);
yellowLight();
}
void yellowLight() {
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(YELLOW_LED_PIN, HIGH);
digitalWrite(GREEN_LED_PIN, LOW);
delay(TIMEOUT/2);
redLight();
}