// === Konfigurasi ===
const int ledPins[] = {13, 12, 11};
// Pola = Variasi 1 + Variasi 2 + Variasi 3 (5x) + jeda akhir
const struct { byte pin; byte state; unsigned int dur; } sequence[] = {
// === Variasi 1 ===
{13, 1, 200}, {13, 0, 50},
{12, 1, 200}, {12, 0, 50},
{11, 1, 200}, {11, 0, 50},
// === Variasi 2 ===
{13, 1, 150}, {13, 0, 50},
{12, 1, 150}, {12, 0, 50},
{11, 1, 150}, {11, 0, 50},
{12, 1, 150}, {12, 0, 50},
{13, 1, 150}, {13, 0, 50},
// === Variasi 3 (5x) ===
{13, 1, 100}, {12, 1, 100}, {11, 1, 100},
{13, 0, 100}, {12, 0, 100}, {11, 0, 100},
{13, 1, 100}, {12, 1, 100}, {11, 1, 100},
{13, 0, 100}, {12, 0, 100}, {11, 0, 100},
{13, 1, 100}, {12, 1, 100}, {11, 1, 100},
{13, 0, 100}, {12, 0, 100}, {11, 0, 100},
{13, 1, 100}, {12, 1, 100}, {11, 1, 100},
{13, 0, 100}, {12, 0, 100}, {11, 0, 100},
{13, 1, 100}, {12, 1, 100}, {11, 1, 100},
{13, 0, 100}, {12, 0, 100}, {11, 0, 100},
// === Jeda akhir ===
{255, 0, 1000} // 255 = sinyal "jeda"
};
const int totalSteps = sizeof(sequence) / sizeof(sequence[0]);
// === Variabel runtime ===
unsigned long prevTime = 0;
int stepIndex = 0;
void setup() {
for (int i = 0; i < 3; i++) pinMode(ledPins[i], OUTPUT);
for (int i = 0; i < 3; i++) digitalWrite(ledPins[i], LOW);
}
void loop() {
unsigned long now = millis();
if (now - prevTime >= sequence[stepIndex].dur) {
// Eksekusi aksi
byte p = sequence[stepIndex].pin;
if (p != 255) digitalWrite(p, sequence[stepIndex].state);
// Lanjut ke langkah berikutnya (loop ulang dari awal)
stepIndex = (stepIndex + 1) % totalSteps;
prevTime = now;
}
}