int R1 = 2, Y1 = 3, G1 = 4;
int R2 = 5, Y2 = 6, G2 = 7;
int trig1 = 8, echo1 = 9;
int trig2 = 10, echo2 = 11;
long duration;
int distance1, distance2;
void setup() {
pinMode(R1, OUTPUT); pinMode(Y1, OUTPUT); pinMode(G1, OUTPUT);
pinMode(R2, OUTPUT); pinMode(Y2, OUTPUT); pinMode(G2, OUTPUT);
pinMode(trig1, OUTPUT); pinMode(echo1, INPUT);
pinMode(trig2, OUTPUT); pinMode(echo2, INPUT);
Serial.begin(9600);
}
int getDistance(int trig, int echo) {
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
duration = pulseIn(echo, HIGH);
return duration * 0.034 / 2;
}
void loop() {
distance1 = getDistance(trig1, echo1);
distance2 = getDistance(trig2, echo2);
if (distance1 < 15 && distance2 >= 15) {
digitalWrite(G1, HIGH); digitalWrite(R2, HIGH);
delay(5000);
digitalWrite(G1, LOW); digitalWrite(Y1, HIGH);
delay(2000);
digitalWrite(Y1, LOW); digitalWrite(R2, LOW);
}
else if (distance2 < 15 && distance1 >= 15) {
digitalWrite(G2, HIGH); digitalWrite(R1, HIGH);
delay(5000);
digitalWrite(G2, LOW); digitalWrite(Y2, HIGH);
delay(2000);
digitalWrite(Y2, LOW); digitalWrite(R1, LOW);
}
else {
digitalWrite(G1, HIGH); digitalWrite(R2, HIGH);
delay(4000);
digitalWrite(G1, LOW); digitalWrite(Y1, HIGH);
delay(2000);
digitalWrite(Y1, LOW); digitalWrite(R2, LOW);
digitalWrite(G2, HIGH); digitalWrite(R1, HIGH);
delay(4000);
digitalWrite(G2, LOW); digitalWrite(Y2, HIGH);
delay(2000);
digitalWrite(Y2, LOW); digitalWrite(R1, LOW);
}
}