// Deklarasi variabel untuk menyimpan status tombol dan status LED
bool button, statusLed = 0;
void setup() {
// Mengatur pin 25 sebagai input dengan pull-up internal
// INPUT_PULLUP memungkinkan penggunaan tanpa resistor eksternal
pinMode(25, INPUT_PULLUP);
// Mengatur pin 26 sebagai output untuk mengontrol perangkat (misalnya LED)
pinMode(26, OUTPUT);
// Memulai komunikasi Serial untuk debugging dengan baud rate 9600
Serial.begin(9600);
}
void loop() {
// Membaca status tombol dari pin 25
// HIGH (1) jika tombol tidak ditekan
// LOW (0) jika tombol ditekan karena fitur pull-up
button = digitalRead(25);
// Mengecek apakah tombol ditekan
if (button == LOW) { // Tombol ditekan
// Toggle status LED
statusLed = !statusLed;
// Menunggu hingga tombol dilepas (menghindari multiple toggles)
while (digitalRead(25) == LOW) {
delay(10); // Debouncing sederhana
}
}
// Mengatur pin 26 sesuai status LED
digitalWrite(26, statusLed);
// Menampilkan status LED di Serial Monitor
Serial.print("Status LED: ");
Serial.println(statusLed);
// Delay tambahan untuk pembacaan lebih stabil
delay(50);
}
/*
Catatan:
1. Pada ESP32, fitur INPUT_PULLUP memungkinkan resistor pull-up internal diaktifkan,
sehingga tidak perlu menggunakan resistor eksternal untuk membaca tombol.
2. Status tombol dibaca sebagai berikut:
- HIGH (1): Tombol tidak ditekan.
- LOW (0): Tombol ditekan.
3. Fungsi `statusLed = !statusLed` digunakan untuk toggle status LED.
4. Penggunaan loop `while` untuk menunggu tombol dilepas menghindari multiple toggles akibat bouncing.
5. Delay kecil 10 ms di dalam `while` untuk debouncing sederhana.
6. Serial Monitor menampilkan status LED untuk debugging.
*/