#define ENTRY_BUTTON1 5
#define EXIT_BUTTON1 18
#define ENTRY_BUTTON2 19
#define EXIT_BUTTON2 21
#define GREEN_LED 14
#define YELLOW_LED 27
#define RED_LED 32
void setup() {
Serial.begin(115200);
pinMode(ENTRY_BUTTON1, INPUT_PULLUP);
pinMode(EXIT_BUTTON1, INPUT_PULLUP);
pinMode(ENTRY_BUTTON2, INPUT_PULLUP);
pinMode(EXIT_BUTTON2, INPUT_PULLUP);
pinMode(GREEN_LED, OUTPUT);
pinMode(YELLOW_LED, OUTPUT);
pinMode(RED_LED, OUTPUT);
}
void loop() {
bool entry1 = !digitalRead(ENTRY_BUTTON1);
bool exit1 = !digitalRead(EXIT_BUTTON1);
bool entry2 = !digitalRead(ENTRY_BUTTON2);
bool exit2 = !digitalRead(EXIT_BUTTON2);
Serial.print("Entry1: "); Serial.print(entry1);
Serial.print(" Exit1: "); Serial.print(exit1);
Serial.print(" Entry2: "); Serial.print(entry2);
Serial.print(" Exit2: "); Serial.println(exit2);
int density1 = entry1 ? 1 : 0;
int density2 = entry2 ? 1 : 0;
if (density1 + density2 == 0) {
setTrafficLight(GREEN_LED);
} else {
if (density1 >= density2) {
setTrafficLight(RED_LED);
delay(5000);
setTrafficLight(GREEN_LED);
} else {
setTrafficLight(RED_LED);
delay(5000);
setTrafficLight(GREEN_LED);
}
}
delay(1000);
}
void setTrafficLight(int state) {
digitalWrite(GREEN_LED, state == GREEN_LED);
digitalWrite(YELLOW_LED, state == YELLOW_LED);
digitalWrite(RED_LED, state == RED_LED);
}