// Tentukan pin GPIO untuk 8 lampu LED
const int ledPins[] = {26, 27, 14, 12, 21, 19, 18, 5};
const int numLeds = 8;
void setup() {
Serial.begin(115200);
// Set semua pin LED sebagai output
for (int i = 0; i < numLeds; i++)
{
pinMode(ledPins[i], OUTPUT);
}
}
void loop() {
Effect1();
Effect2();
}
void Effect1() {
// 1. Gerakan dari kiri ke kanan
for (int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], HIGH);
delay(100);
digitalWrite(ledPins[i], LOW);
}
delay(500); // Tahan 500ms
Serial.println("Effect1 : kiri ke kanan berhasil");
// 2. Gerakan dari kanan ke kiri
for (int i = numLeds - 1; i >= 0; i--) {
digitalWrite(ledPins[i], HIGH);
delay(100);
digitalWrite(ledPins[i], LOW);
}
delay(500); // Tahan 500ms
Serial.println("Effect1 : kanan ke kiri berhasil");
// 1. Hidupkan dari tengah ke luar
for (int i = numLeds / 2 - 1; i >= 0; i--) {
digitalWrite(ledPins[i], HIGH); // Bagian kiri (tengah ke luar)
digitalWrite(ledPins[numLeds - 1 - i], HIGH); // Bagian kanan (tengah ke luar)
delay(200);
}
delay(500); // Tahan 500ms
Serial.println("Effect1 : hidup dari tengah ke luar berhasil");
// 2. matikan dari luar ke dalam (dari ujung ke tengah)
for (int i = 0; i < numLeds / 2; i++) {
digitalWrite(ledPins[i], LOW); // Bagian kiri (bawah)
digitalWrite(ledPins[numLeds - 1 - i], LOW); // Bagian kanan (atas)
delay(200);
}
delay(500); // Tahan 500ms sebelum memulai lagi
Serial.println("Effect1 : mati dari luar ke tengah berhasil");
}
void Effect2() {
// Semua lampu menyala bersamaan
for (int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], HIGH);
}
delay(1000); // Tahan selama 1000ms
// Semua lampu mati bersamaan
for (int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], LOW);
}
delay(200); // Tahan 200ms
// Lampu menyala lagi
for (int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], HIGH);
}
delay(100); // Tahan selama 100ms
// Lampu mati lagi
for (int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], LOW);
}
delay(500); // Tahan 500ms sebelum mengulangi efek lain
Serial.println("Effect2: berhasil");
}