Photo by Jorge Ramirez on Unsplash

 

Pernah merasa tombol di proyekmu terlalu sensitif? Sekali tekan, tapi LED menyala dan mati berkali-kali? Atau input dari push button seperti tidak stabil?

Itu tandanya kamu perlu mengenal satu konsep penting dalam dunia embedded: debouncing.

 

Tombol Fisik Itu Tidak Sempurna

Push button atau switch yang kita gunakan di proyek biasanya terlihat sederhana: ditekan, menyambung, dilepas, terputus. Namun kenyataannya, saat tombol ditekan atau dilepas, kontak logam di dalamnya bisa memantul (bouncing).

Artinya, meskipun kamu menekan tombol sekali, sinyal listriknya bisa naik-turun beberapa kali dalam waktu milidetik dan ini ditangkap oleh mikrokontroler sebagai banyak input.

 

Gambarannya Seperti Ini:

Tekan Sekali Tapi Sinyalnya Terlihat Seperti Ini:
⬆⬇⬆⬇⬆⬇⬆ sebelum akhirnya stabil

Akibatnya?

  • Funsi digitalRead() bisa menganggap kamu menekan tombol berkali-kali.
  • Logika proram menjadi tidak stabil.

 

Solusinya: Debouncing

Debouncing adalah teknik untuk menstabilkan sinyal input dari tombol, agar mikrokontroler hanya membaca satu sinyal yang valid saat tombol ditekan.

 

Jenis Debouncing

1.Debouncing Hardware

Menggunakan komponen tambahan seperti:

  • Kapasitor kecil (100nF) di paralel dengan tombol ⮕menyerap noise.
  • Resistor pull-up / pull-down untuk menjaga logika tetap stabil.

Kelebihan:

  • Efektif dan langsung “diatasi dari sumbernya”.

Kekurangan:

  • Butuh komponen fisik, tidak fleksibel untuk ubahan.

2.Debouncing Software

Mengatur jeda (delay) atau menunggu kestabilan sinyal dalam kode program.

Contoh sederhana (Arduino):

const int tombol = 2;

const int led = 13;

int statusTerakhir = LOW;

unsigned long waktuTerakhir = 0;

const int debounceDelay = 50;

 

void setup() {

pinMode(tombol, INPUT);

pinMode(led, OUTPUT);

}

 

void loop() {

int bacaTombol = digitalRead(tombol);

if (bacaTombol != statusTerakhir) {

waktuTerakhir = millis();

}

 

if ((millis() – waktuTerakhir) > debounceDelay) {

if (bacaTombol == HIGH) {

digitalWrite(led, !digitalRead(led));

}

}

 

statusTerakhir = bacaTombol;

}

 

Kelebihan:

  • Tidak butuh komponen tambahan.
  • Fleksibel dan bisa disesuaikan dengan kondisi.

Kekurangan:

  • Bisa sedikit membingungkan bagi pemula.

 

Kapan Harus Debounce?

  • Selalu. Bahkan tombol baru pun punya debouncing.
  • Saat menggunakan interrupt untuk input dari tombol.
  • Saat membuat counter, toggle switch, atau sistem kendali real-time.

 

Kesimpulan

Tombol yang “bandel” bukan karena rusak tapi karena tidak diberi waktu untuk tenang. Debouncing adalah langkah kecil namun krusial untuk membuat proyekmu stabil dan profesional. Kamu bisa memilih metode hardware, software, atau bahkan kombinasi antara keduanya tergantung kebutuhan.

 

 

Sumber Referensi:

  • Arduino Reference: https://www.arduino.cc/en/Tutorial/BuiltInExamples/Debounce
  • SparkFun Guide: https://learn.sparkfun.com/tutorials/switch-basics
  • Embedded Systems Book by Jonathan Valvano