Blog Archive

Arduino Indonesia. Gambar tema oleh Storman. Diberdayakan oleh Blogger.

Supported by Electronics 3 in 1

1. Jasa pencetakan PCB single layer dengan harga paling murah.

(Metode Pembuatan dengan Transfer Toner)
>PCB design sendiri (siap cetak) : Rp.150,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

(Metode Sablon Full Masking dan Silk Screen minimal pemesanan 100 Pcs)
>PCB design sendiri (siap cetak) : Rp.200,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

2. Jasa perancangan, perakitan, dan pembuatan trainer pembelajaran elektronika untuk SMK dan Mahasiswa.

3. Jasa perancangan, perakitan, dan pembuatan berbagai macam kontroller, sensor, aktuator, dan tranduser.
>Design Rangkaian / Sistem Elektronika
>Design Rangkaian / Sistem Instrumentasi
>Design Rangkaian / Sistem Kendali
>Kerjasama Riset (data atau peralatan)
>Kerjasama Produksi Produk-Produk KIT Elektronika
>Produksi Instrumentasi Elektronika

4. Jasa Pembuatan Proyek, Tugas Akhir, Tugas Laboratorium, PKM, Karya Ilmiah, SKRIPSI, dll

Like My Facebook

Popular Posts

Selasa, 12 Mei 2026

Arduino Button Debounce - Cara Mengatasi Tombol Terbaca Berkali-Kali

Saat pertama kali menggunakan push button pada Arduino, banyak pemula mengira bahwa tombol hanya berubah dari kondisi HIGH ke LOW atau LOW ke HIGH satu kali setiap ditekan. Namun pada praktiknya, kondisi tersebut tidak langsung stabil. Karena faktor mekanis pada tombol, sinyal bisa berubah sangat cepat beberapa kali dalam hitungan milidetik sebelum benar-benar stabil.

 

Fenomena ini disebut button bouncing atau button chatter. Akibatnya, satu kali tekan tombol bisa terbaca sebagai beberapa kali tekan oleh Arduino. Pada proyek sederhana mungkin tidak terlalu terlihat, tetapi pada proyek seperti menu, counter, robot, atau kontrol relay, masalah ini bisa menyebabkan sistem bekerja tidak sesuai. Pada artikel ini, kita akan mempelajari cara kerja debounce, perbedaan pembacaan tombol dengan dan tanpa debounce, serta cara membuat pembacaan tombol menjadi lebih stabil menggunakan kode Arduino maupun library tambahan.


Perangkat Keras yang Dibutuhkan

- Arduino UNO R3

- Kabel USB

- Breadboard

- Kabel jumper

- Push button / tombol tekan

- Panel push button

- Modul push button

Apa itu Button Debounce?

Debounce adalah teknik untuk menghilangkan sinyal noise atau bouncing pada tombol. Ketika tombol ditekan, kontak logam di dalam tombol sebenarnya tidak langsung stabil. Kontak tersebut akan memantul sangat cepat sehingga menghasilkan perubahan sinyal seperti ini:

HIGH → LOW → HIGH → LOW → LOW

Padahal pengguna hanya menekan tombol satu kali. Arduino membaca perubahan tersebut sebagai beberapa penekanan tombol.

Kenapa Debounce Penting?

Tanpa debounce, beberapa masalah berikut bisa terjadi:

- Counter bertambah lebih dari satu

- LED berkedip tidak normal

- Menu berpindah beberapa kali

- Relay aktif berulang

- Sistem menjadi tidak stabil

Karena itu, debounce hampir selalu digunakan pada proyek berbasis tombol.

Wiring Diagram

Pada tutorial ini, tombol dihubungkan menggunakan mode INPUT_PULLUP. Dengan konfigurasi:

- Satu kaki tombol → pin digital Arduino

- Satu kaki tombol → GND

Metode ini lebih sederhana karena tidak membutuhkan resistor eksternal.

 

Membaca Tombol Tanpa Debounce

Sebelum memahami debounce, mari lihat dulu bagaimana perilaku tombol tanpa debounce.

Kode Arduino Tanpa Debounce


const int BUTTON_PIN = 7;


int lastState = LOW;

int currentState;


void setup() {

  Serial.begin(9600);


  pinMode(BUTTON_PIN, INPUT_PULLUP);

}


void loop() {

  currentState = digitalRead(BUTTON_PIN);


  if(lastState == HIGH && currentState == LOW)

    Serial.println("Tombol ditekan");


  else if(lastState == LOW && currentState == HIGH)

    Serial.println("Tombol dilepas");


  lastState = currentState;

}

 

Cara Menjalankan Program

Langkah-langkah

1. Hubungkan Arduino ke PC menggunakan kabel USB

2. Buka Arduino IDE

3. Pilih board dan port yang sesuai

4. Salin kode program di atas

5. Upload program ke Arduino

 

6. Buka Serial Monitor

7. Tekan dan tahan tombol beberapa detik

8. Lepaskan tombol

Hasil yang Terjadi

Meskipun tombol hanya ditekan satu kali, Serial Monitor biasanya akan menampilkan beberapa kali secara acak. Inilah efek dari button bouncing.

 

Tombol ditekan

Tombol dilepas

Tombol ditekan

Tombol dilepas

Kenapa Bouncing Bisa Terjadi?

Push button bekerja menggunakan kontak logam kecil. Saat tombol ditekan:

- Kontak logam saling menyentuh

- Namun tidak langsung stabil

- Terjadi pantulan kecil berkali-kali

- Arduino membaca setiap pantulan sebagai perubahan sinyal

Karena Arduino bekerja sangat cepat, perubahan kecil ini tetap terbaca.

Cara Mengatasi Bouncing dengan Debounce

Salah satu metode paling umum adalah menambahkan delay kecil sebelum Arduino menganggap sinyal benar-benar valid. Biasanya delay debounce berada di kisaran:

- 20 ms

- 50 ms

- 100 ms

Kode Arduino dengan Debounce


const int BUTTON_PIN = 7;

const int DEBOUNCE_DELAY = 50;


int lastSteadyState = LOW;

int lastFlickerableState = LOW;

int currentState;


unsigned long lastDebounceTime = 0;


void setup() {

  Serial.begin(9600);


  pinMode(BUTTON_PIN, INPUT_PULLUP);

}


void loop() {

  currentState = digitalRead(BUTTON_PIN);


  if (currentState != lastFlickerableState) {

    lastDebounceTime = millis();


    lastFlickerableState = currentState;

  }


  if ((millis() - lastDebounceTime) > DEBOUNCE_DELAY) {


    if (lastSteadyState == HIGH && currentState == LOW)

      Serial.println("Tombol ditekan");


    else if (lastSteadyState == LOW && currentState == HIGH)

      Serial.println("Tombol dilepas");


    lastSteadyState = currentState;

  }

}

 

Penjelasan Cara Kerja Debounce

Program di atas bekerja dengan cara:

1. Membaca status tombol

2. Jika ada perubahan sinyal, Arduino mencatat waktunya menggunakan millis()

3. Arduino menunggu beberapa milidetik

4. Jika sinyal tetap stabil setelah waktu debounce selesai, maka perubahan dianggap valid

Dengan cara ini, bouncing tidak lagi terbaca sebagai banyak penekanan.

Hasil Setelah Menggunakan Debounce

Sekarang ketika tombol ditekan satu kali, hanya muncul satu kali. Pembacaan tombol menjadi jauh lebih stabil dan akurat.

 

Tombol ditekan

Tombol dilepas


Menggunakan Library ezButton

Jika tidak ingin membuat debounce manual, kita bisa menggunakan library ezButton. Library ini membuat kode lebih pendek, rapi, dan mudah dipahami.

 


Keunggulan ezButton

Beberapa keuntungan menggunakan ezButton:

- Debounce otomatis

- Kode lebih sederhana

- Mudah digunakan

- Cocok untuk banyak tombol

- Tidak perlu membuat logika debounce sendiri

Kode Debounce untuk Satu Tombol

 

#include <ezButton.h>


ezButton button(7);


void setup() {

  Serial.begin(9600);


  button.setDebounceTime(50);

}


void loop() {

  button.loop();


  if(button.isPressed())

    Serial.println("Tombol ditekan");


  if(button.isReleased())

    Serial.println("Tombol dilepas");

}


Penjelasan Program

Membuat Objek Tombol

 

ezButton button(7);

 

Artinya tombol terhubung ke pin 7.

Mengatur Waktu Debounce

 

button.setDebounceTime(50);

 

Menentukan debounce selama 50 milidetik.

Membaca Tombol

 

button.loop();

 

Fungsi ini wajib dipanggil terus-menerus di dalam loop().

Mendeteksi Tombol Ditekan

 

button.isPressed()

 

Mendeteksi Tombol Dilepas

 

button.isReleased()

 

Menggunakan Debounce untuk Banyak Tombol

Jika proyek menggunakan lebih dari satu tombol, library ezButton sangat membantu.

Kode Debounce Banyak Tombol

 

#include <ezButton.h>


ezButton button1(6);

ezButton button2(7);

ezButton button3(8);


void setup() {

  Serial.begin(9600);


  button1.setDebounceTime(50);

  button2.setDebounceTime(50);

  button3.setDebounceTime(50);

}


void loop() {

  button1.loop();

  button2.loop();

  button3.loop();


  if(button1.isPressed())

    Serial.println("Button 1 ditekan");


  if(button1.isReleased())

    Serial.println("Button 1 dilepas");


  if(button2.isPressed())

    Serial.println("Button 2 ditekan");


  if(button2.isReleased())

    Serial.println("Button 2 dilepas");


  if(button3.isPressed())

    Serial.println("Button 3 ditekan");


  if(button3.isReleased())

    Serial.println("Button 3 dilepas");

}

 

Wiring Diagram 


Keuntungan Menggunakan Banyak Tombol dengan ezButton

Dengan library ini, kita bisa:

- Mengelola banyak tombol lebih mudah

- Mengurangi kode berulang

- Membuat program lebih rapi

- Menghindari error debounce manual

Kapan Debounce Harus Digunakan?

Debounce sangat penting pada proyek seperti:

- Counter digital

- Menu LCD

- Sistem keypad

- Robot

- Kontrol relay

- Smart home

- Game controller

Kapan Debounce Tidak Terlalu Dibutuhkan?

Pada beberapa kasus sederhana seperti:

- Tombol reset

- Trigger sederhana

- Sistem non-kritis

bouncing mungkin tidak terlalu terasa. Namun tetap disarankan menggunakan debounce agar sistem lebih stabil.

Tips Menggunakan Push Button pada Arduino

Beberapa tips penting:

- Gunakan mode INPUT_PULLUP

- Hindari kabel terlalu panjang

- Gunakan debounce

- Jangan gunakan delay terlalu besar

- Gunakan library jika memakai banyak tombol

 

Baca juga: Arduino - Mendeteksi Short Press dan Long Press pada Button 

 

Dalam praktik, hasil dan kendala yang ditemui bisa berbeda tergantung perangkat, konfigurasi, versi library, dan sistem yang digunakan.  

0 on: "Arduino Button Debounce - Cara Mengatasi Tombol Terbaca Berkali-Kali"