Dalam proyek Arduino, kita sering menggunakan push button untuk input. Namun, tombol mekanis memiliki kelemahan alami yaitu bouncing — sinyal naik-turun cepat yang bisa menyebabkan pembacaan ganda saat tombol ditekan.
Untuk mengatasi hal ini, kita perlu menerapkan debouncing, dan pada tutorial ini kita akan fokus menggunakan software debouncing.
Apa Itu Bouncing?
Ketika tombol ditekan atau dilepas, kontak mekanis dalam tombol tidak langsung stabil. Ini menyebabkan sinyal naik-turun dalam waktu sangat singkat (sekitar 5–50 milidetik). Arduino membaca ini sebagai beberapa sinyal cepat, meskipun sebenarnya hanya satu penekanan.
Tujuan Proyek
Membaca input tombol secara stabil tanpa efek bouncing menggunakan metode perangkat lunak (software debounce).
Alat dan Bahan
- 1x Arduino Uno
- 1x Push Button
- 1x Resistor 10K Ohm (pull-down resistor)
- Breadboard
- Kabel jumper
- (Opsional) LED untuk visualisasi
- (Opsional) Resistor 220 Ohm
Skema Rangkaian
- Satu kaki tombol ke GND
- Satu kaki tombol ke pin digital 2 Arduino dan ke resistor 10K Ohm ke GND
- Tambahkan LED ke pin 13 Arduino (built-in) jika ingin indikator visual
Kode Program:
const int tombolPin = 2; // Pin input tombol
const int ledPin = 13; // LED built-in Arduino
bool statusTombol = LOW; // Status tombol yang digunakan
bool terakhir = LOW; // Status sebelumnya
unsigned long waktuTerakhir = 0; // Waktu terakhir terjadi perubahan
const unsigned long debounceDelay = 50; // Delay debounce (ms)
void setup() {
pinMode(tombolPin, INPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
Serial.begin(9600);
}
void loop() {
bool dibaca = digitalRead(tombolPin);
if (dibaca != terakhir) {
waktuTerakhir = millis(); // Reset waktu jika terjadi perubahan
}
if ((millis() - waktuTerakhir) > debounceDelay) {
if (dibaca != statusTombol) {
statusTombol = dibaca;
if (statusTombol == HIGH) {
Serial.println("Tombol ditekan!");
digitalWrite(ledPin, !digitalRead(ledPin)); // Toggle LED
}
}
}
terakhir = dibaca;
}
Penjelasan Kode:
- Menggunakan millis() untuk mencatat waktu terakhir perubahan
- Perubahan hanya dianggap valid jika sudah stabil selama 50 ms
- Menghindari delay() agar loop tetap responsif
Tampilan Serial Monitor
Keunggulan Debounce Software
- Tidak memerlukan komponen tambahan
- Fleksibel dan bisa disesuaikan dengan kebutuhan
- Cocok untuk semua jenis input digital
Alternatif Lain
- Gunakan library seperti Bounce2 untuk manajemen debounce yang lebih rapi
- Gunakan debounce hardware dengan kapasitor jika diperlukan akurasi tinggi atau banyak tombol
Selamat mencoba dan semoga tombol-tombolmu makin responsif dan bebas noise!
EmoticonEmoticon
Note: Only a member of this blog may post a comment.