unsigned long intervalMerah=5000; // durasi untuk jeda dalam miliseconds
unsigned long intervalKuningOn=5000;
unsigned long intervalKuningOff=10000;
unsigned long previousMillisMerah=0; // variable untuk temporary milis
unsigned long previousMillisKuning=0;
bool ledStateMerah = 1; // state variable for the LED
bool ledStateKuning = 1;
unsigned long currentMillis;
void setup() {
// put your setup code here, to run once:
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
// lampu merah
digitalWrite(2, ledStateMerah);
// lampu kuning
digitalWrite(3, ledStateKuning);
}
void loop() {
// put your main code here, to run repeatedly:
currentMillis = millis();
// kontrol lampu merah
if (currentMillis - previousMillisMerah >= intervalMerah) {
ledStateMerah = !ledStateMerah;
digitalWrite(2, ledStateMerah);
previousMillisMerah = currentMillis;
}
// Kontrol lampu kuning
if (ledStateKuning){
if (currentMillis - previousMillisKuning >= intervalKuningOn) {
previousMillisKuning = currentMillis;
ledStateKuning = false;
digitalWrite(3, LOW); // Matikan lampu kuning
}
}else {
if (currentMillis - previousMillisKuning >= intervalKuningOff) {
previousMillisKuning = currentMillis;
ledStateKuning = true;
digitalWrite(3, HIGH); // Nyalakan lampu kuning
}
}
}