#define NUM_LEDS 8
int ledPins[NUM_LEDS] = {2, 3, 4, 5, 6, 7, 8, 9};
void setup() {
randomSeed(analogRead(0)); // untuk random efek
for (int i = 0; i < NUM_LEDS; i++) {
pinMode(ledPins[i], OUTPUT);
}
}
void loop() {
// Efek dari kode pertama
randomBlink();
waveEffect();
snakeEffect();
doubleFlash();
// Efek dari kode kedua
spiralIn();
spiralOut();
chaseDouble();
strobeCenter();
waveBounce();
}
// ========== Efek dari kode pertama ==========
// LED nyala acak
void randomBlink() {
for (int i = 0; i < 20; i++) {
int led = random(NUM_LEDS);
digitalWrite(ledPins[led], HIGH);
delay(80);
digitalWrite(ledPins[led], LOW);
}
}
// Efek gelombang maju
void waveEffect() {
for (int i = 0; i < NUM_LEDS; i++) {
digitalWrite(ledPins[i], HIGH);
delay(100);
}
for (int i = 0; i < NUM_LEDS; i++) {
digitalWrite(ledPins[i], LOW);
delay(100);
}
}
// Efek "ular" cepat
void snakeEffect() {
for (int i = 0; i < NUM_LEDS; i++) {
digitalWrite(ledPins[i], HIGH);
if (i > 0) digitalWrite(ledPins[i - 1], LOW);
delay(60);
}
digitalWrite(ledPins[NUM_LEDS - 1], LOW);
}
// Kedip ganda cepat semua LED
void doubleFlash() {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < NUM_LEDS; j++) digitalWrite(ledPins[j], HIGH);
delay(150);
for (int j = 0; j < NUM_LEDS; j++) digitalWrite(ledPins[j], LOW);
delay(150);
}
}
// ========== Efek dari kode kedua ==========
// Spiral masuk ke tengah
void spiralIn() {
int left = 0;
int right = NUM_LEDS - 1;
while (left <= right) {
digitalWrite(ledPins[left], HIGH);
digitalWrite(ledPins[right], HIGH);
delay(100);
left++;
right--;
}
delay(200);
allOff();
}
// Spiral keluar dari tengah
void spiralOut() {
int left = NUM_LEDS / 2 - 1;
int right = NUM_LEDS / 2;
while (left >= 0) {
digitalWrite(ledPins[left], HIGH);
digitalWrite(ledPins[right], HIGH);
delay(100);
left--;
right++;
}
delay(200);
allOff();
}
// Dua lampu kejar-kejaran
void chaseDouble() {
for (int i = 0; i < NUM_LEDS - 1; i++) {
digitalWrite(ledPins[i], HIGH);
digitalWrite(ledPins[i + 1], HIGH);
delay(100);
allOff();
}
}
// Strobe di tengah
void strobeCenter() {
int mid1 = NUM_LEDS / 2 - 1;
int mid2 = NUM_LEDS / 2;
for (int i = 0; i < 6; i++) {
digitalWrite(ledPins[mid1], HIGH);
digitalWrite(ledPins[mid2], HIGH);
delay(80);
digitalWrite(ledPins[mid1], LOW);
digitalWrite(ledPins[mid2], LOW);
delay(80);
}
}
// Gelombang bolak-balik
void waveBounce() {
for (int i = 0; i < NUM_LEDS; i++) {
digitalWrite(ledPins[i], HIGH);
delay(70);
digitalWrite(ledPins[i], LOW);
}
for (int i = NUM_LEDS - 1; i >= 0; i--) {
digitalWrite(ledPins[i], HIGH);
delay(70);
digitalWrite(ledPins[i], LOW);
}
}
// Matikan semua LED
void allOff() {
for (int i = 0; i < NUM_LEDS; i++) {
digitalWrite(ledPins[i], LOW);
}
}