Pemprograman Tombol Push On ke ESP32: Belajar Mikrokontroler (Lesson 1 - Bagian 3)
- Zen System

- Jun 22
- 4 min read
Pada bagian 1 dan 2, kita sudah belajar bagaimana sebuah mikrokontroler dapat mengendalikan lampu led, hingga kita dapat belajar bagaimana mensimulasikan lampu lalu lintas. Pada bagian ini kita akan belajar mengenai tombol push on. Jika pada tutorial sebelumnya, lampu led yang sudah diprogram akan dikerjakan otomatis oleh mikrokontroler, maka button push on ini adalah bentuk intervensi manual oleh manusia. Jadi mikrokontroler ini dapat bekerja secara otomatis dan juga bekerja secara manual.
Tutorial 5: ESP32 Membaca Input Tombol Push On
Untuk tutorial awal, kita akan belajar bagaimana memprogram tombol Push On agar dapat diketahui oleh mikrokontroler ESP32 dan setelah itu kita akan buat buat perintah ke ESP32 untuk memberikan informasi bahwa tombol Push On telah ditekan.
Material yang diperlukan:
Chip ESP32 & kabel data

Tombol Push On

Resistor 10K ohm

Kabel serabut AWG26
Skema koneksi
Lakukan koneksi material diatas seperti gambar dibawah ini:

Coding
Masukkan kode perintah seperti dibawah ini:
int tombol_pin = 13;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(tombol_pin, INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
int v = digitalRead(tombol_pin);
if (v == HIGH) {
Serial.println("Tombol ditekan.");
}
delay(200);
}Upload kode tersebut ke ESP32.
Hasil
Setelah kode program di upload. Pilih software serial di pojok kanan atas (terlihat pada gambar dibawah ini dengan tanda angka 1). Jika kalian tekan tombol push on, maka akan muncul informasi "Tombol ditekan." (angka 2).

Penjelasan Kode Program
int tombol_pin = 13;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(tombol_pin, INPUT);
}Kode program diatas memiliki arti mendeklarasikan variabel bernama tombol_pin dengan tipe data integer (int) dengan nilai 13 yang merupakan salah satu nomor pin dari ESP32. Pada function setup(), ada perintah Serial.begin(9600), yang berarti buat jembatan komunikasi menggunakan channel 9600. Untuk function pinMode(tombol_pin, INPUT), berarti buat pin nomor 13 menjadi mode input.
void loop() {
// put your main code here, to run repeatedly:
int v = digitalRead(tombol_pin);
if (v == HIGH) {
Serial.println("Tombol ditekan.");
}
delay(200);
}Didalam function loop(), ada perintah membuat variabel bernama v, untuk menampung nilai dari tombol. Jika tombol ditekan maka nilai yang ditampung adalah HIGH, dan jika tidak ditekan maka nilainya adalah LOW.
Setelah ditampung, maka ada proses membandingkan (compare). Bentuk standar (syntax) dari proses membandingkan adalah:
if (kondisi) {
kode perintah jika kondisi = benar
}Jadi pada program yang sudah kalian masukkan tadi memiliki arti, jika "v == HIGH", maka kirimkan informasi berupa teks "Tombol ditekan." ke kanal 9600.
Tutorial 6: Memprogram ESP32 untuk Menyalakan LED menggunakan Tombol Push On
Di tutorial ini kita akan gabungkan tutorial led yang sudah kita pelajari sebelumnya dengan tombol Push On. Skenario sederhananya adalah jika tombol Push On ditekan, maka led akan menyala. Sebaliknya, jika tombol Push On ditekan lagi, makan led yang sebelumnya menyala akan mati.
Material yang diperlukan:
Chip ESP32 & kabel data

Led Merah

Tombol Push On

Resistor 10K ohm 1pcs dan resistor 220 ohm 1 pcs

Kabel serabut AWG26
Skema koneksi
Lakukan koneksi material diatas seperti gambar dibawah ini:

Coding
Masukkan kode perintah untuk skenario diatas:
int tombol_pin = 13;
int led_merah = 4;
int led_status = 0;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(tombol_pin, INPUT);
pinMode(led_merah, OUTPUT);
digitalWrite(led_merah, LOW);
}
void loop() {
// put your main code here, to run repeatedly:
int v = digitalRead(tombol_pin);
if (v == HIGH) {
if (led_status == 0) {
Serial.println("LED dinyalakan");
digitalWrite(led_merah, HIGH);
led_status = 1;
} else if (led_status == 1) {
Serial.println("LED dimatikan");
digitalWrite(led_merah, LOW);
led_status = 0;
}
}
delay(200);
}Upload kode tersebut ke ESP32.
Hasil
Penjelasan Kode Program
int tombol_pin = 13;
int led_merah = 4;
int led_status = 0;Kode program diatas adalah deklarasi nama variabel dengan nilainya. Disini kita akan membuat 3 variabel untuk pin tombol, pin led dan status led. Status led untuk memberikan informasi kepada mikrokontroler, jika status awal led adalah mati atau 0 dan jika status led menyala adalah 1.
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(tombol_pin, INPUT);
pinMode(led_merah, OUTPUT);
digitalWrite(led_merah, LOW);
}Pada function setup(), yang dimana akan dieksekusi setiap ESP32 dinyalakan, ada berapa perintah, yaitu:
Serial.begin(9600), berarti membuat jalur komunikasi antar hardware di channel 9600.
pinMode(tombol_pin, INPUT), berarti menetapkan pin 13 menjadi mode input.
pinMode(led_merah, OUTPUT), berarti menetapkan pin 4 menjadi mode output.
digitalWrite(led_merah, LOW), berarti membuat status awal (default) led merah adalah mati (0).
void loop() {
// put your main code here, to run repeatedly:
int v = digitalRead(tombol_pin);
if (v == HIGH) {
if (led_status == 0) {
Serial.println("LED dinyalakan");
digitalWrite(led_merah, HIGH);
led_status = 1;
} else if (led_status == 1) {
Serial.println("LED dimatikan");
digitalWrite(led_merah, LOW);
led_status = 0;
}
}
delay(200);
}Pada function loop(), dimana mikrokontroler akan terus mengeksekusi perintah berulang-ulang secara berurutan (sequential), terdapat beberapa perintah yang memiliki penjelasan sebagai berikut:
Tampung nilai tombol ke variabel v, dimana jika tombol tidak ditekan maka nilainya adalah LOW, sedangkan jika ditekan nilainya adalah HIGH.
Jika variabel v memiliki nilai HIGH, maka perintah didalam blok function if (v == HIGH), akan dieksekusi. Dengan kondisi:
jika status led adalah mati (0), if (led_status == 0), maka nyalakan led dengan perintah digitalWrite(), dan ubah status led menjadi hidup atau 1.
jika status led adalah hidup (1), if(led_status == 1), maka matikan led dengan perintah digitalWrite(), dan ubah status led menjadi mati atau 0.
Comments