// Definisi pin untuk lampu lalu lintas
const int M1 = 2;
const int K1 = 3;
const int H1 = 4;
const int M2 = 5;
const int K2 = 6;
const int H2 = 7;
const int M3 = 8;
const int K3 = 9;
const int H3 = 10;
const int M4 = 11;
const int K4 = 12;
const int H4 = 13;
// Variabel untuk melacak simpang saat ini
int currentIntersection = 1;
// Durasi lampu lalu lintas
const int redDuration = 5000; // 5 detik
const int yellowDuration = 2000; // 2 detik
const int greenDuration = 5000; // 5 detik
void setup
()
{
// Set pin sebagai output untuk lampu lalu lintas
pinMode(M1, OUTPUT);
pinMode(K1, OUTPUT);
pinMode(H1, OUTPUT);
pinMode(M2, OUTPUT);
pinMode(K2, OUTPUT);
pinMode(H2, OUTPUT);
pinMode(M3, OUTPUT);
pinMode(K3, OUTPUT);
pinMode(H3, OUTPUT);
pinMode(M4, OUTPUT);
pinMode(K4, OUTPUT);
pinMode(H4, OUTPUT);
}
case 1:
// Simpang 1: lampu hijau, lainnya merah
digitalWrite(H2, HIGH);
digitalWrite(M3, HIGH);
digitalWrite(M4, HIGH);
digitalWrite(M5, HIGH);
delay(greenDuration);
digitalWrite(H2, LOW);
digitalWrite(K2, HIGH);
delay(yellowDuration);
digitalWrite(K2, LOW);
digitalWrite(M3, LOW);
currentIntersection = 2;
break;
case 2:
// Simpang 2: lampu hijau, lainnya merah
digitalWrite(H3, HIGH);
digitalWrite(M2, HIGH);
digitalWrite(M4, HIGH);
digitalWrite(M5, HIGH);
delay(greenDuration);
digitalWrite(H3, LOW);
digitalWrite(K3, HIGH);
delay(yellowDuration);
digitalWrite(K3, LOW);
digitalWrite(M4, LOW);
currentIntersection = 3;
break;
case 3:
// Simpang 3: lampu hijau, lainnya merah
digitalWrite(H4, HIGH);
digitalWrite(M2, HIGH);
digitalWrite(M3, HIGH);
digitalWrite(M5, HIGH);
delay(greenDuration);
digitalWrite(H4, LOW);
digitalWrite(K4, HIGH);
delay(yellowDuration);
digitalWrite(K4, LOW);
digitalWrite(M5, LOW);
currentIntersection = 4;
break;
case 4:
// Simpang 4: lampu hijau, lainnya merah
digitalWrite(H5, HIGH);
digitalWrite(M2, HIGH);
digitalWrite(M3, HIGH);
digitalWrite(M4, HIGH);
delay(greenDuration);
digitalWrite(H5, LOW);
digitalWrite(K5, HIGH);
delay(yellowDuration);
digitalWrite(K2, LOW);
digitalWrite(M2, LOW);
currentIntersection = 1;
break;
}
}