const int pin_1 = 12; // lampu merah
const int pin_2 = 13; // lampu kuning
const int pin_3 = 14; // lampu hijau
unsigned long previousTime = 0; // variabel untuk menyimpan waktu sebelumnya
unsigned long interval = 3000; // interval waktu default
int lampu = 0; // variabel untuk menentukan status lampu (0: merah, 1: kuning, 2: hijau)
void setup() {
pinMode(pin_1, OUTPUT); // set lampu merah sebagai output
pinMode(pin_2, OUTPUT); // set lampu kuning sebagai output
pinMode(pin_3, OUTPUT); // set lampu hijau sebagai output
}
void loop() {
unsigned long currentTime = millis(); // ambil waktu sekarang
// Periksa apakah sudah waktunya untuk mengubah lampu
if (currentTime - previousTime > interval) {
// Reset waktu sebelumnya
previousTime = currentTime;
// Matikan semua lampu
digitalWrite(pin_1, LOW);
digitalWrite(pin_2, LOW);
digitalWrite(pin_3, LOW);
// Ubah lampu sesuai dengan aturan waktu
if (lampu == 0) { // lampu merah
digitalWrite(pin_1, HIGH); // nyala merah
interval = 3000; // reset interval waktu
lampu = 1; // ubah ke lampu kuning
} else if (lampu == 1) { // lampu kuning
digitalWrite(pin_2, HIGH); // nyala kuning
interval = 1500; // set interval waktu untuk kuning
lampu = 2; // ubah ke lampu hijau
} else { // lampu hijau
digitalWrite(pin_3, HIGH); // nyala hijau
interval = 500; // set interval waktu untuk hijau
lampu = 0; // kembali ke lampu merah
}
}
}