int ledPins[] = {3, 4, 5, 6, 7}; // Pin LED
int potPin = A0; // Pin potensiometer
int buttonPin = 2; // Pin push button
int ledCount = 5; // Jumlah LED
int delayTime = 500; // Waktu delay default
int buttonState = 0; // Status tombol
int lastButtonState = 0; // Status tombol sebelumnya
int mode = 1; // Mode awal (1 = kanan ke kiri, 2 = kiri ke kanan, 3 = semua LED nyala)
int potValue = 0;
void setup() {
// Inisialisasi pin LED sebagai output
for (int i = 0; i < ledCount; i++) {
pinMode(ledPins[i], OUTPUT);
}
pinMode(potPin, INPUT); // Inisialisasi pin potensiometer
pinMode(buttonPin, INPUT); // Inisialisasi pin push button
Serial.begin(9600); // Memulai komunikasi serial (opsional, untuk debugging)
}
void loop() {
// Baca nilai potensiometer (0-1023) dan konversi menjadi delay time (10-500 ms)
potValue = analogRead(potPin);
delayTime = map(potValue, 0, 1023, 500, 10); // Nilai delay semakin kecil maka LED lebih cepat
// Debugging: menampilkan nilai potensiometer dan delay di serial monitor
Serial.print("Potensiometer Value: ");
Serial.print(potValue);
Serial.print(" - Delay Time: ");
Serial.println(delayTime);
// Baca status tombol untuk mengubah mode
buttonState = digitalRead(buttonPin);
// Jika tombol ditekan, ubah mode nyala LED
if (buttonState != lastButtonState) {
if (buttonState == HIGH) {
mode++;
if (mode > 3) {
mode = 1; // Kembali ke mode 1 setelah mode 3
}
Serial.print("Mode: ");
Serial.println(mode); // Debugging untuk menampilkan mode saat berubah
}
delay(50); // Debounce
}
lastButtonState = buttonState;
// Implementasi mode nyala LED
switch (mode) {
case 1: // Mode 1: Nyala LED dari kanan ke kiri
for (int i = 0; i < ledCount; i++) {
digitalWrite(ledPins[i], HIGH); // Nyalakan LED
delay(delayTime); // Tunggu berdasarkan nilai potensiometer
digitalWrite(ledPins[i], LOW); // Matikan LED
}
break;
case 2: // Mode 2: Nyala LED dari kiri ke kanan
for (int i = ledCount - 1; i >= 0; i--) {
digitalWrite(ledPins[i], HIGH); // Nyalakan LED
delay(delayTime); // Tunggu berdasarkan nilai potensiometer
digitalWrite(ledPins[i], LOW); // Matikan LED
}
break;
case 3: // Mode 3: Semua LED nyala dan mati bersamaan
for (int i = 0; i < ledCount; i++) {
digitalWrite(ledPins[i], HIGH); // Nyalakan semua LED
}
delay(delayTime); // Tunggu sebentar
for (int i = 0; i < ledCount; i++) {
digitalWrite(ledPins[i], LOW); // Matikan semua LED
}
delay(delayTime); // Tunggu sebentar
break;
}
}