int h1=13;
int k1=12;
int m1=11;
int h2=10;
int k2=9;
int m2=8;
int h3=7;
int k3=6;
int m3=5;
int h4=4;
int k4=3;
int m4=2;
unsigned long previousMillis=0;
const long interval=500;
bool ledState=LOW;
void setup() {
// put your setup code here, to run once:
pinMode(h1,OUTPUT);
pinMode(k1,OUTPUT);
pinMode(m1,OUTPUT);
pinMode(h2,OUTPUT);
pinMode(k2,OUTPUT);
pinMode(m2,OUTPUT);
pinMode(h3,OUTPUT);
pinMode(k3,OUTPUT);
pinMode(m3,OUTPUT);
pinMode(h4,OUTPUT);
pinMode(k4,OUTPUT);
pinMode(m4,OUTPUT);
digitalWrite(h1, HIGH);
digitalWrite(k1,HIGH);
digitalWrite(m1,HIGH);
digitalWrite(h2,HIGH);
digitalWrite(k2,HIGH);
digitalWrite(m2,HIGH);
digitalWrite(h3,HIGH);
digitalWrite(k3,HIGH);
digitalWrite(m3,HIGH);
digitalWrite(h4,HIGH);
digitalWrite(k4,HIGH);
digitalWrite(m4,HIGH);
delay(2000);
digitalWrite(h1,LOW);
digitalWrite(k1,LOW);
digitalWrite(m1,LOW);
digitalWrite(h2,LOW);
digitalWrite(k2,LOW);
digitalWrite(m2,LOW);
digitalWrite(h3,LOW);
digitalWrite(k3,LOW);
digitalWrite(m3,LOW);
digitalWrite(h4,LOW);
digitalWrite(k4,LOW);
digitalWrite(m4,LOW);
}
void loop() {
// Handle k2 dan k4 blinking
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
ledState = !ledState;
digitalWrite(k2, ledState);
digitalWrite(k4, ledState);
}
digitalWrite(h1, LOW);
digitalWrite(m3, LOW);
digitalWrite(k3, LOW);
digitalWrite(k1, LOW);
digitalWrite(h3, HIGH);
digitalWrite(m1, HIGH);
delayNonBlocking(6000);
digitalWrite(k1, HIGH);
digitalWrite(k3, HIGH);
delayNonBlocking(2000);
digitalWrite(h3, LOW);
digitalWrite(m1, LOW);
digitalWrite(k1, LOW);
digitalWrite(k3, LOW);
digitalWrite(h1, HIGH);
digitalWrite(m3, HIGH);
delayNonBlocking(6000);
digitalWrite(k1, HIGH);
digitalWrite(k3, HIGH);
delayNonBlocking(2000);
}
// Non-blocking delay function
void delayNonBlocking(unsigned long delayTime) {
unsigned long start = millis();
while (millis() - start < delayTime) {
// Handle k2 dan k4 blinking during non-blocking delay
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
ledState = !ledState;
digitalWrite(k2, ledState);
digitalWrite(k4, ledState);
}
}
}