const int ledHijau = 12;
const int ledMerah = 13;
const int ledKuning = 14;
const int pushButton = 15;
unsigned long previousMillis = 0;
unsigned long intervalHijau = 3000;
unsigned long intervalMerah = 3000;
unsigned long intervalKuning = 1000;
unsigned long intervalPushMerah = 5000;
int ledState = 0;
bool buttonPressed = false;
unsigned long buttonPressMillis = 0;
void setup() {
pinMode(ledHijau, OUTPUT);
pinMode(ledMerah, OUTPUT);
pinMode(ledKuning, OUTPUT);
pinMode(pushButton, INPUT_PULLUP);
}
void loop() {
unsigned long currentMillis = millis();
// Cek apakah tombol ditekan
if (digitalRead(pushButton) == LOW && !buttonPressed) {
buttonPressed = true;
buttonPressMillis = currentMillis; // Catat waktu saat tombol ditekan
digitalWrite(ledMerah, HIGH); // Nyalakan LED Merah selama 5 detik
digitalWrite(ledHijau, LOW);
digitalWrite(ledKuning, LOW);
}
if (buttonPressed) {
if (currentMillis - buttonPressMillis >= intervalPushMerah) {
buttonPressed = false; // Reset tombol setelah 5 detik
}
} else {
// Siklus lampu jika tombol tidak ditekan
if (ledState == 0 && currentMillis - previousMillis >= intervalHijau) {
previousMillis = currentMillis;
digitalWrite(ledHijau, LOW);
digitalWrite(ledMerah, HIGH);
ledState = 1;
}
else if (ledState == 1 && currentMillis - previousMillis >= intervalMerah) {
previousMillis = currentMillis;
digitalWrite(ledMerah, LOW);
digitalWrite(ledKuning, HIGH);
ledState = 2;
}
else if (ledState == 2 && currentMillis - previousMillis >= intervalKuning) {
previousMillis = currentMillis;
digitalWrite(ledKuning, LOW);
digitalWrite(ledHijau, HIGH);
ledState = 0;
}
}
}