int ledPins[] = {5, 2, 3, 4};
// 0 = LED tetap hidup
// 1 = kiri, 2 = tengah, 3 = kanan
void setup() {
for (int i = 0; i < 4; i++) {
pinMode(ledPins[i], OUTPUT);
digitalWrite(ledPins[i], LOW);
}
digitalWrite(ledPins[0], HIGH); // LED0 selalu hidup
}
void loop() {
ceremonyEpic();
while (true); // selesai, semua LED tetap hidup
}
void ceremonyEpic() {
// --- Intro: dua kali gebukan berat ---
for (int i = 0; i < 2; i++) {
digitalWrite(ledPins[1], HIGH);
digitalWrite(ledPins[3], HIGH);
delay(600);
digitalWrite(ledPins[1], LOW);
digitalWrite(ledPins[3], LOW);
delay(400);
}
// --- Build-up: tempo makin cepat ---
int steps = 12;
for (int i = 0; i < steps; i++) {
int delayTime = map(i, 0, steps - 1, 350, 120);
// awal 350 ms → akhir 120 ms
// kiri+kanan bareng
digitalWrite(ledPins[1], HIGH);
digitalWrite(ledPins[3], HIGH);
delay(delayTime);
digitalWrite(ledPins[1], LOW);
digitalWrite(ledPins[3], LOW);
// tengah sebagai aksen
digitalWrite(ledPins[2], HIGH);
delay(delayTime / 2);
digitalWrite(ledPins[2], LOW);
delay(delayTime / 2);
}
// --- Variation sebelum klimaks ---
for (int i = 0; i < 4; i++) {
// kiri+kanan+ tengah nyala bergantian
digitalWrite(ledPins[1], HIGH); delay(100); digitalWrite(ledPins[1], LOW);
digitalWrite(ledPins[2], HIGH); delay(150); digitalWrite(ledPins[2], LOW);
digitalWrite(ledPins[3], HIGH); delay(100); digitalWrite(ledPins[3], LOW);
}
delay(500);
digitalWrite(ledPins[1], LOW);
digitalWrite(ledPins[2], LOW);
digitalWrite(ledPins[3], LOW);
// // --- Finale: gebukan besar ---
// for (int j = 0; j < 3; j++) {
// for (int i = 1; i < 4; i++) digitalWrite(ledPins[i], HIGH);
// delay(400 - j * 100); // 400 → 300 → 200 ms
// for (int i = 1; i < 4; i++) digitalWrite(ledPins[i], LOW);
// delay(200);
// }
// --- Ending: semua hidup permanen ---
for (int i = 1; i < 4; i++) {
digitalWrite(ledPins[i], HIGH);
}
}