Push button atau tombol tekan adalah salah satu komponen paling dasar dalam dunia elektronika dan proyek Arduino. Meskipun terlihat sederhana, banyak pemula yang masih bingung saat mencoba membaca status tombol menggunakan Arduino. Biasanya masalah muncul karena pembacaan pin yang tidak stabil atau tombol yang terbaca ditekan berkali-kali padahal hanya ditekan sekali. Pada artikel ini, kita akan mempelajari cara kerja push button, cara menghubungkannya ke Arduino UNO, hingga cara membaca status tombol menggunakan kode program Arduino. Selain itu, artikel ini juga membahas konsep pull-up resistor, floating input, dan fenomena bouncing agar hasil pembacaan tombol menjadi lebih stabil dan akurat.
Perangkat Keras yang Dibutuhkan
- Arduino UNO R3
- Kabel USB
- Breadboard
- Kabel jumper
- Push button / tombol tekan
- Panel push button
- Modul push button
- LED (opsional)
Mengenal Push Button Arduino
Push button, tactile switch, atau momentary switch adalah jenis sakelar yang hanya aktif saat ditekan. Ketika tombol dilepas, sakelar akan kembali ke posisi semula. Komponen ini sering digunakan pada berbagai proyek Arduino, seperti:
- Sistem menu
- Kontrol LED
- Alarm sederhana
- Robot
- Sistem keamanan
- Kontrol motor
Jenis-jenis Push Button
1. Push Button Breadboard
Jenis ini paling sering digunakan pada proyek Arduino pemula karena mudah dipasang di breadboard.
2. Push Button Panel
Biasanya digunakan pada proyek permanen atau casing proyek elektronik.
3. Modul Push Button
Modul ini sudah dilengkapi resistor bawaan sehingga lebih praktis digunakan.
Pinout Push Button
Push button standar biasanya memiliki 4 pin. Namun sebenarnya pin-pin tersebut terhubung secara internal menjadi dua pasang. Oleh karena itu, kita hanya perlu menggunakan 2 pin saja yang tidak terhubung langsung.
Kenapa Push Button Memiliki 4 Pin?
Empat pin dibuat agar tombol lebih kokoh saat dipasang pada PCB atau breadboard sehingga tidak mudah goyang ketika ditekan.
Cara Kerja Push Button
Push button bekerja sangat sederhana:
- Saat tombol tidak ditekan, kedua jalur tidak terhubung
- Saat tombol ditekan, kedua jalur menjadi terhubung
Arduino kemudian membaca perubahan kondisi tersebut melalui pin input digital.
Modul Push Button Arduino
Berbeda dengan push button biasa, modul push button sudah memiliki resistor bawaan sehingga lebih mudah digunakan.
Modul ini biasanya memiliki tiga pin:
- GND → dihubungkan ke GND Arduino
- VCC → dihubungkan ke 5V Arduino
- OUT → dihubungkan ke pin digital Arduino
Karena sudah memiliki resistor internal, output modul akan:
- LOW saat tombol tidak ditekan
- HIGH saat tombol ditekan
Arduino dan Push Button
Untuk membaca status tombol, salah satu kaki tombol dihubungkan ke pin Arduino, sedangkan kaki lainnya dihubungkan ke:
- VCC menggunakan resistor pull-down
atau
- GND menggunakan resistor pull-up
Arduino kemudian membaca status pin menggunakan fungsi:
digitalRead()
Masalah yang Sering Dialami Pemula
Ada dua masalah utama yang sering terjadi saat menggunakan push button pada Arduino.
1. Floating Input
- Gejala
Nilai pembacaan tombol tidak stabil meskipun tombol tidak ditekan.
- Penyebab
Pin input tidak menggunakan resistor pull-up atau pull-down.
- Solusi
Gunakan resistor pull-up atau resistor pull-down.
2. Button Bouncing
- Gejala
Tombol ditekan satu kali tetapi Arduino membaca beberapa kali.
- Penyebab
Kontak mekanis pada tombol tidak langsung stabil sehingga menghasilkan perubahan HIGH dan LOW sangat cepat.
- Solusi
Gunakan teknik:
- Debounce
- Delay kecil
- Library khusus seperti ezButton
Pull-Up dan Pull-Down Resistor
Ada dua metode umum untuk menghubungkan push button ke Arduino.
1. Menggunakan Pull-Down Resistor
Pada metode ini:
- Tombol terhubung ke VCC
- Pin Arduino membaca:
- HIGH saat ditekan
- LOW saat dilepas
Metode ini memerlukan resistor eksternal.
2. Menggunakan Pull-Up Resistor
Pada metode ini:
- Tombol terhubung ke GND
- Pin Arduino membaca:
- LOW saat ditekan
- HIGH saat dilepas
Metode ini bisa menggunakan resistor internal Arduino melalui mode INPUT_PULLUP
Kenapa INPUT_PULLUP Lebih Disarankan?
Bagi pemula, metode ini jauh lebih mudah karena:
- Tidak perlu resistor eksternal
- Wiring lebih sederhana
- Pembacaan lebih stabil
Oleh karena itu, tutorial ini menggunakan metode INPUT_PULLUP.
Wiring Diagram
Pada tutorial ini terdapat dua jenis wiring:
- Wiring push button breadboard
- Wiring push button panel
Hubungkan salah satu kaki tombol ke:
- Pin digital Arduino
- GND Arduino
Cara Membaca Tombol pada Arduino
1. Mengatur Pin Input
Gunakan fungsi:
pinMode(BUTTON_PIN, INPUT_PULLUP);
Contoh:
pinMode(7, INPUT_PULLUP);
2. Membaca Status Tombol
Gunakan fungsi:
digitalRead(BUTTON_PIN);
Contoh:
int buttonState = digitalRead(BUTTON_PIN);
Mendeteksi Perubahan Status Tombol
Pada beberapa proyek, kita tidak hanya perlu mengetahui tombol ditekan atau tidak, tetapi juga kapan status tombol berubah.
Contohnya:
- LOW → HIGH
- HIGH → LOW
Contoh Program Deteksi Perubahan Tombol
const int BUTTON_PIN = 7;
int lastState = HIGH;
int currentState;
void setup() {
Serial.begin(9600);
pinMode(BUTTON_PIN, INPUT_PULLUP);
}
void loop() {
currentState = digitalRead(BUTTON_PIN);
if(lastState == LOW && currentState == HIGH)
Serial.println("Status berubah dari LOW ke HIGH");
lastState = currentState;
}
Penjelasan Program
Program di atas bekerja dengan cara:
1. Membaca status tombol saat ini
2. Membandingkan dengan status sebelumnya
3. Jika terjadi perubahan, Arduino akan menampilkan pesan ke Serial Monitor
Teknik ini sering digunakan untuk:
- Counter
- Toggle LED
- Menu navigasi
- Sistem kontrol
Kode Program Arduino Push Button
Berikut contoh program sederhana untuk membaca status tombol.
const int BUTTON_PIN = 7;
void setup() {
Serial.begin(9600);
pinMode(BUTTON_PIN, INPUT_PULLUP);
}
void loop() {
int buttonState = digitalRead(BUTTON_PIN);
Serial.println(buttonState);
}
Cara Menjalankan Program
Langkah-langkah menjalankan program sebagai berikut:
1. Hubungkan Arduino ke PC menggunakan kabel USB
2. Buka Arduino IDE
3. Pilih board dan port yang sesuai
4. Salin kode program
5. Upload program ke Arduino
6. Buka Serial Monitor
7. Tekan tombol beberapa kali
Hasil yang Akan Muncul
Pada Serial Monitor:
- 1 berarti HIGH
- 0 berarti LOW
Karena menggunakan INPUT_PULLUP, maka:
- Tombol ditekan → LOW
- Tombol dilepas → HIGH
Memodifikasi Program Arduino
Sekarang kita akan membuat Arduino mendeteksi:
- Tombol ditekan
- Tombol dilepas
Kode Program Detect Press dan Release
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 Kerja Program
Program akan:
- Menampilkan pesan saat tombol ditekan
- Menampilkan pesan saat tombol dilepas
Teknik ini sering dipakai pada:
- Sistem menu
- Kontrol robot
- Kontrol game
- Smart home
Fenomena Bouncing pada Push Button
Kadang tombol ditekan sekali tetapi Arduino mendeteksi berkali-kali. Hal ini disebut "Button Bouncing".Penyebabnya adalah kontak mekanis tombol yang tidak langsung stabil.
Cara Mengatasi Bouncing
Beberapa metode yang bisa digunakan:
- Delay kecil
- Debounce manual
- Menggunakan library
- Menggunakan state machine
Library ezButton
Untuk mempermudah penggunaan tombol, tersedia library ezButton. Library ini membantu:
- Debounce otomatis
- Pembacaan lebih stabil
- Kode lebih rapi
Sangat cocok untuk pemula maupun proyek besar.
Penggunaan INPUT untuk Modul Button
Jika menggunakan modul button yang sudah memiliki resistor bawaan, gunakan:
pinMode(BUTTON_PIN, INPUT);
Karena modul sudah menyediakan pull-up atau pull-down internal.
Tantangan untuk Dicoba
Agar lebih memahami penggunaan push button, coba buat proyek berikut:
- Menyalakan LED saat tombol ditekan
- Mematikan LED saat tombol dilepas
- Membuat toggle LED
- Membuat counter jumlah penekanan tombol
- Membuat menu sederhana
Kapan Harus Menggunakan Pull-Up atau Pull-Down?
Gunakan resistor pull-up/pull-down jika sensor memiliki kondisi:
- Terhubung
atau
- Tidak terhubung
Contohnya:
- Push button
- Sakelar
- Sensor pintu magnetik
Kapan Tidak Membutuhkan Pull-Up atau Pull-Down?
Jika sensor sudah menghasilkan level tegangan yang jelas:
- LOW
- HIGH
Maka resistor tambahan tidak diperlukan.
Contohnya:
- Sensor gerak
- Sensor sentuh
- Sensor ultrasonik
- Modul relay
Baca juga: Arduino Traffic Light - Cara Membuat Simulasi Lampu Lalu Lintas dengan Arduino
Dalam praktik, hasil dan kendala yang ditemui bisa berbeda tergantung perangkat, konfigurasi, versi library, dan sistem yang digunakan.
- Diskusi umum dan tanya jawab praktik: https://t.me/edukasielektronika
- Kendala spesifik dan kasus tertentu: http://bit.ly/Chatarduino


0 on: "Arduino Button - Cara Menggunakan Push Button dengan Arduino UNO"