// Definisikan pin untuk LED, Pushbutton, dan Potensiometer
#define button_pin 12 // Pin untuk pushbutton
#define pot_pin 34 // Pin untuk potensiometer (menggunakan pin ADC di ESP32)
const int led_pins[] = {2, 4, 5, 18, 19, 21, 22, 23}; // Pin untuk 8 LED
int baca_pot; // Variabel untuk menyimpan pembacaan potensiometer
int baca_button; // Variabel untuk menyimpan pembacaan pushbutton
bool led_on = true; // Variabel untuk mengetahui status LED (semua nyala atau mati)
unsigned long debounceDelay = 200; // Debounce untuk pushbutton
unsigned long lastDebounceTime = 0;
void setup() {
Serial.begin(115200); // Inisialisasi komunikasi serial
pinMode(button_pin, INPUT_PULLUP); // Pushbutton diatur sebagai input dengan pull-up internal
pinMode(pot_pin, INPUT); // Potensiometer sebagai input
// Inisialisasi semua pin LED sebagai output dan nyalakan semua LED
for (int i = 0; i < 8; i++) {
pinMode(led_pins[i], OUTPUT);
digitalWrite(led_pins[i], HIGH); // Pada awalnya semua LED menyala
}
}
void loop() {
baca_button = digitalRead(button_pin); // Membaca status pushbutton
// Jika pushbutton ditekan, semua LED mati/nyala (toggle status LED)
if (baca_button == LOW && (millis() - lastDebounceTime) > debounceDelay) {
led_on = !led_on; // Toggle status LED (mati atau nyala semua)
lastDebounceTime = millis(); // Simpan waktu terakhir tombol ditekan
}
// Jika LED dimatikan oleh pushbutton, matikan semua LED
if (!led_on) {
for (int i = 0; i < 8; i++) {
digitalWrite(led_pins[i], LOW); // Matikan semua LED
}
} else {
// Jika LED dihidupkan, kontrol LED sesuai potensiometer
baca_pot = analogRead(pot_pin); // Membaca nilai potensiometer (0-4095 pada ESP32)
// Konversi nilai potensiometer menjadi jumlah LED yang menyala (0-8)
int led_count = map(baca_pot, 0, 4095, 0, 8);
// Nyalakan LED berdasarkan nilai dari potensiometer
for (int i = 0; i < 8; i++) {
if (i < led_count) {
digitalWrite(led_pins[i], HIGH); // Nyalakan LED
} else {
digitalWrite(led_pins[i], LOW); // Matikan LED
}
}
// Tampilkan nilai konversi di Serial Monitor untuk debug
Serial.print("Potentiometer value: ");
Serial.print(baca_pot);
Serial.print(" - LED count: ");
Serial.println(led_count);
}
delay(50); // Penundaan untuk stabilitas
}