Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // IR Sensor Pins
- const int IR1_SideA = 2; // IR Sensor 1 on Side A
- const int IR2_SideA = 3; // IR Sensor 2 on Side A
- const int IR1_SideB = 4; // IR Sensor 1 on Side B
- const int IR2_SideB = 5; // IR Sensor 2 on Side B
- // Traffic Light Pins for Side A
- const int RedA = 6;
- const int YellowA = 7;
- const int GreenA = 8;
- // Traffic Light Pins for Side B
- const int RedB = 9;
- const int YellowB = 10;
- const int GreenB = 11;
- // Timing variables
- const int greenTime = 5000; // Green light duration in ms
- const int yellowTime = 2000; // Yellow light duration in ms
- void setup() {
- // Set IR sensor pins as input
- pinMode(IR1_SideA, INPUT);
- pinMode(IR2_SideA, INPUT);
- pinMode(IR1_SideB, INPUT);
- pinMode(IR2_SideB, INPUT);
- // Set traffic light pins as output
- pinMode(RedA, OUTPUT);
- pinMode(YellowA, OUTPUT);
- pinMode(GreenA, OUTPUT);
- pinMode(RedB, OUTPUT);
- pinMode(YellowB, OUTPUT);
- pinMode(GreenB, OUTPUT);
- // Initialize traffic lights (Side A red, Side B red)
- digitalWrite(RedA, HIGH);
- digitalWrite(RedB, HIGH);
- }
- void loop() {
- // Read IR sensors
- int carsSideA = !digitalRead(IR1_SideA) + !digitalRead(IR2_SideA); // Count cars on Side A
- int carsSideB = !digitalRead(IR1_SideB) + !digitalRead(IR2_SideB); // Count cars on Side B
- if (carsSideA > carsSideB) {
- switchToGreen('A');
- } else if (carsSideB > carsSideA) {
- switchToGreen('B');
- } else {
- // Equal or no cars detected, default to Side A green
- switchToGreen('A');
- }
- }
- void switchToGreen(char side) {
- if (side == 'A') {
- // Side A green
- digitalWrite(GreenA, HIGH);
- digitalWrite(RedB, HIGH);
- delay(greenTime);
- // Side A yellow
- digitalWrite(GreenA, LOW);
- digitalWrite(YellowA, HIGH);
- delay(yellowTime);
- // Reset to red
- digitalWrite(YellowA, LOW);
- digitalWrite(RedA, HIGH);
- digitalWrite(RedB, LOW);
- } else {
- // Side B green
- digitalWrite(GreenB, HIGH);
- digitalWrite(RedA, HIGH);
- delay(greenTime);
- // Side B yellow
- digitalWrite(GreenB, LOW);
- digitalWrite(YellowB, HIGH);
- delay(yellowTime);
- // Reset to red
- digitalWrite(YellowB, LOW);
- digitalWrite(RedB, HIGH);
- digitalWrite(RedA, LOW);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment