/*
* ESP32 Digital Input Output - Button LED Control
* Membaca status pushbutton dan mengontrol LED berdasarkan input
*
* Hardware:
* - ESP32 DEVKIT V1
* - LED 5mm + Resistor 330 ohm di GPIO16
* - Pushbutton + Resistor 10k ohm di GPIO4
*
* Dibuat berdasarkan: Random Nerd Tutorials ESP32 Course
* Diadaptasi untuk: Koding Indonesia
*/
// ===== KONFIGURASI PIN =====
const int buttonPin = 4; // Pin untuk pushbutton (GPIO4)
const int ledPin = 16; // Pin untuk LED (GPIO16)
// ===== VARIABEL =====
int buttonState = 0; // Variabel untuk menyimpan status pushbutton
// ===== SETUP =====
void setup() {
// Inisialisasi komunikasi serial untuk debugging
Serial.begin(115200);
Serial.println("ESP32 Digital I/O Test Started");
Serial.println("===============================");
// Inisialisasi pushbutton pin sebagai input
pinMode(buttonPin, INPUT);
Serial.print("Button pin (GPIO");
Serial.print(buttonPin);
Serial.println(") configured as INPUT");
// Inisialisasi LED pin sebagai output
pinMode(ledPin, OUTPUT);
Serial.print("LED pin (GPIO");
Serial.print(ledPin);
Serial.println(") configured as OUTPUT");
// Pastikan LED mati di awal program
digitalWrite(ledPin, LOW);
Serial.println("Setup completed. Press button to control LED.");
Serial.println();
}
// ===== LOOP UTAMA =====
void loop() {
// Baca status pushbutton
buttonState = digitalRead(buttonPin);
// Cek apakah pushbutton ditekan
// Jika ya, buttonState akan HIGH (1)
if (buttonState == HIGH) {
// Nyalakan LED
digitalWrite(ledPin, HIGH);
Serial.println("Button PRESSED - LED ON");
} else {
// Matikan LED
digitalWrite(ledPin, LOW);
Serial.println("Button RELEASED - LED OFF");
}
// Delay kecil untuk mengurangi spam serial output
delay(100);
}