Pada artikel sebelumnya kita sudah membuat program sederhana untuk menyalakan LED menggunakan ESP32 pada artikel Belajar ESP32: LED Blink. Jika LED Blink hanya berfokus pada output, maka pada artikel ini kita akan belajar bagaimana ESP32 membaca input dan mengontrol output secara bersamaan.
Contoh yang akan kita buat adalah:
- Ketika tombol ditekan, LED akan menyala
- Ketika tombol dilepas, LED akan mati
Konsep ini merupakan dasar dari hampir semua proyek embedded system, karena mikrokontroler selalu bekerja dengan membaca input lalu memberikan output.
Konsep Digital Input dan Output pada ESP32

ESP32 memiliki banyak pin yang disebut GPIO (General Purpose Input Output). Pin ini dapat dikonfigurasi sebagai input maupun output sesuai kebutuhan program.
Secara umum ada tiga fungsi penting yang sering digunakan:
pinMode(pin, mode); digitalWrite(pin, state); digitalRead(pin);
Penjelasannya:
pinMode()
Digunakan untuk menentukan apakah sebuah pin akan berfungsi sebagai input atau output.
pinMode(GPIO, OUTPUT);
atau
pinMode(GPIO, INPUT);
digitalWrite()
Digunakan untuk mengatur nilai pin HIGH atau LOW.
digitalWrite(GPIO, HIGH);
Jika HIGH maka pin akan mengeluarkan tegangan sekitar 3.3V, sedangkan LOW berarti 0V.
digitalRead()
Digunakan untuk membaca nilai dari pin input.
digitalRead(GPIO);
digitalRead(GPIO);
Digunakan untuk membaca nilai dari pin input.
digitalRead(GPIO);
Nilai yang dibaca juga hanya dua kemungkinan yaitu HIGH atau LOW.
Komponen yang Dibutuhkan
Untuk membuat rangkaian sederhana ini kita membutuhkan beberapa komponen:
- ESP32
- LED
- Resistor 220Ω
- Push Button
- Breadboard
- Kabel jumper
Skema Rangkaian
Rangkaian yang digunakan cukup sederhana:
- LED terhubung ke GPIO 5
- Push Button terhubung ke GPIO 4
Ketika tombol ditekan, ESP32 akan membaca input dari GPIO 4 dan menyalakan LED pada GPIO 5.

Program ESP32
Berikut program yang digunakan untuk membaca tombol dan menyalakan LED.
const int buttonPin = 4;
const int ledPin = 5;
int buttonState = 0;
void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
}
Penjelasan Program
Mari kita lihat bagian penting dari kode di atas.
Mendefinisikan Pin
const int buttonPin = 4; const int ledPin = 5;
Baris ini mendefinisikan bahwa:
- tombol berada di GPIO 4
- LED berada di GPIO 5
Setup Pin Mode
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
- tombol diset sebagai INPUT
- LED diset sebagai OUTPUT
Membaca Status Tombol
buttonState = digitalRead(buttonPin);
ESP32 membaca apakah tombol dalam keadaan HIGH atau LOW.
Mengontrol LED
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
}Jika tombol ditekan, maka LED akan menyala.
else {
digitalWrite(ledPin, LOW);
}Jika tombol tidak ditekan, LED akan mati.
Cara Menjalankan Program
- Hubungkan ESP32 ke komputer menggunakan kabel USB
- Buka Arduino IDE
- Pilih board ESP32 Dev Module
- Upload kode program
- Tekan tombol pada rangkaian
Jika rangkaian dan program benar, maka LED akan menyala ketika tombol ditekan.
Kesimpulan
Pada artikel ini kita telah mempelajari dasar Input dan Output pada ESP32, yaitu:
- Menggunakan
pinMode()untuk menentukan fungsi pin - Menggunakan
digitalRead()untuk membaca input - Menggunakan
digitalWrite()untuk mengontrol output
Konsep ini sangat penting karena hampir semua proyek IoT atau embedded system selalu melibatkan sensor sebagai input dan aktuator sebagai output.


Pingback: Belajar ESP32: Internal Sensor - SMSRV