// Definisikan pin untuk pushbutton dan potensiometer
#define button_pin 15
#define pot_pin 34
// Definisikan pin untuk 8 buah LED
int led_pins[] = {32, 33, 25, 26, 27, 14, 12, 13}; // Ganti GPIO 35 dengan GPIO 13
// Variabel untuk menyimpan status pushbutton dan nilai potensiometer
int button_state = 0; // Status tombol
int pot_value = 0; // Nilai potensiometer
bool semua_led_mati = false; // Variabel untuk melacak apakah semua LED mati atau tidak
bool is_initial = true; // Variabel untuk melacak kondisi awal
void setup() {
// Inisialisasi komunikasi serial
Serial.begin(9600);
// Set pin pushbutton dan potensiometer
pinMode(button_pin, INPUT_PULLUP); // Menggunakan pull-up internal untuk pushbutton
pinMode(pot_pin, INPUT);
// Set semua pin LED sebagai output
for (int i = 0; i < 8; i++) {
pinMode(led_pins[i], OUTPUT);
}
// Awalnya semua LED menyala
nyalakanSemuaLED();
}
void loop() {
// Membaca status pushbutton
button_state = digitalRead(button_pin);
// Jika pushbutton ditekan, matikan semua LED
if (button_state == LOW) {
matikanSemuaLED(); // Matikan semua LED saat tombol ditekan
semua_led_mati = true; // Tandai bahwa semua LED mati
is_initial = false; // Keluar dari mode awal setelah tombol ditekan
} else if (semua_led_mati) {
// Jika tombol dilepaskan, tandai LED tidak mati lagi
semua_led_mati = false;
}
// Kontrol LED berdasarkan nilai potensiometer
// Jika LED tidak mati, periksa nilai potensiometer
if (!semua_led_mati && !is_initial) {
pot_value = analogRead(pot_pin); // Membaca nilai potensiometer
kontrolLEDdenganPotensiometer(pot_value); // Sesuaikan LED berdasarkan nilai potensiometer
}
// Jika belum ada interaksi, semua LED tetap menyala
if (is_initial) {
nyalakanSemuaLED(); // Pastikan LED tetap menyala selama kondisi awal
}
delay(100); // Jeda 100ms untuk stabilitas
}
// Fungsi untuk menyalakan semua LED
void nyalakanSemuaLED() {
for (int i = 0; i < 8; i++) {
digitalWrite(led_pins[i], HIGH);
}
}
// Fungsi untuk mematikan semua LED
void matikanSemuaLED() {
for (int i = 0; i < 8; i++) {
digitalWrite(led_pins[i], LOW);
}
}
// Fungsi untuk mengontrol jumlah LED yang menyala sesuai dengan potensiometer
void kontrolLEDdenganPotensiometer(int nilai_pot) {
// Mengonversi nilai potensiometer (0-4095) menjadi jumlah LED yang menyala (0-8)
int led_on_count = map(nilai_pot, 0, 4095, 0, 8);
// Nyalakan LED sesuai dengan nilai potensiometer
for (int i = 0; i < 8; i++) {
if (i < led_on_count) {
digitalWrite(led_pins[i], HIGH); // Nyalakan LED
} else {
digitalWrite(led_pins[i], LOW); // Matikan LED
}
}
}