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

Rabu, 20 Mei 2026

Arduino Button Toggle Relay dengan dan tanpa Debouncing

Pada tutorial sebelumnya, kita sudah mempelajari cara menyalakan relay saat tombol ditekan dan mematikannya ketika tombol dilepaskan. Namun, pada banyak proyek Arduino, kita sering membutuhkan sistem yang bekerja seperti sakelar rumah, yaitu sekali tekan untuk menyalakan perangkat dan sekali tekan lagi untuk mematikannya. Konsep ini disebut sebagai toggle relay.

 

Dalam tutorial ini, kita akan mempelajari cara membuat tombol sebagai sakelar toggle relay menggunakan Arduino UNO. Dengan metode ini, relay tidak akan aktif hanya selama tombol ditekan, tetapi status relay akan berubah setiap kali tombol ditekan satu kali. Teknik ini sangat berguna untuk berbagai proyek otomatisasi seperti kontrol lampu, kipas, pompa air, motor DC, hingga perangkat elektronik rumah tangga lainnya. 

 

Tutorial ini juga membahas dua metode yang umum digunakan, yaitu mengontrol relay dengan tombol tanpa debouncing dan mengontrol relay dengan tombol menggunakan debouncing. Metode debouncing sangat penting karena tombol mekanis sering menghasilkan pembacaan ganda saat ditekan. Tanpa debounce, satu kali tekan bisa terbaca sebagai beberapa kali penekanan sehingga relay dapat berkedip atau berubah status secara tidak stabil.

 

Baca juga: Arduino Button Relay - Cara Mengontrol Relay Menggunakan Push Button pada Arduino Uno 

Wiring Diagram Arduino Button Toggle Relay

 

Perangkat Keras yang Dibutuhkan

- Arduino UNO R3

- Kabel USB

- Breadboad

- Kabel jumper

- Push button / tombol tekan

- Modul push button (opsional)

- Modul relay

- Motor DC

- Battery 9V 

Relay dapat digunakan untuk mengontrol berbagai perangkat seperti motor DC, lampu, pompa air, maupun perangkat AC. Jika menggunakan tegangan tinggi, selalu berhati-hati saat melakukan pengkabelan. 

Cara Kerja Toggle Relay dengan Tombol

Pada sistem toggle, relay akan berubah status setiap kali tombol ditekan:

- Tekanan pertama → relay menyala

- Tekanan kedua → relay mati

- Tekanan ketiga → relay menyala kembali 

Arduino akan membaca perubahan status tombol dari HIGH ke LOW karena kita menggunakan mode INPUT_PULLUP. Saat perubahan terdeteksi, Arduino akan membalik status relay menggunakan logika toggle.

Kode Program Arduino Toggle Relay Tanpa Debouncing

Berikut kode dasar untuk membuat relay toggle menggunakan tombol tanpa debounce.

 

// constants won't change

const int BUTTON_PIN = 7; // Arduino pin connected to button's pin

const int RELAY_PIN  = 3; // Arduino pin connected to relay's pin


// variables will change:

int relayState = LOW;   // the current state of relay

int lastButtonState;    

int currentButtonState;


void setup() {

  Serial.begin(9600);


  pinMode(BUTTON_PIN, INPUT_PULLUP);

  pinMode(RELAY_PIN, OUTPUT);


  currentButtonState = digitalRead(BUTTON_PIN);

}


void loop() {

  lastButtonState = currentButtonState;

  currentButtonState = digitalRead(BUTTON_PIN);


  if(lastButtonState == HIGH && currentButtonState == LOW) {

    Serial.println("The button is pressed");


    // toggle relay state

    relayState = !relayState;


    // update relay output

    digitalWrite(RELAY_PIN, relayState);

  }

}

 

Penjelasan Kode Program

Pada bagian awal program, kita menentukan pin yang digunakan untuk tombol dan relay.

 

const int BUTTON_PIN = 7;

const int RELAY_PIN  = 3;

 

Kemudian dibuat variabel relayState untuk menyimpan kondisi relay saat ini, apakah menyala atau mati.

 

int relayState = LOW;

 

Arduino membaca kondisi tombol secara terus-menerus menggunakan digitalRead().

 

currentButtonState = digitalRead(BUTTON_PIN);

 

Saat tombol berubah dari HIGH menjadi LOW, Arduino menganggap tombol sedang ditekan.

 

if(lastButtonState == HIGH && currentButtonState == LOW)

 

Baris berikut digunakan untuk membalik status relay.

 

relayState = !relayState;

 

Kode tersebut setara dengan:

 

if(relayState == LOW)

  relayState = HIGH;

else

  relayState = LOW;

 

Terakhir, status relay diperbarui menggunakan digitalWrite().

 

digitalWrite(RELAY_PIN, relayState);

 

Kelemahan Program Tanpa Debouncing

Meskipun program di atas terlihat sederhana dan bekerja dengan baik, pada praktiknya tombol mekanis sering menghasilkan noise atau bouncing. Akibatnya, relay bisa berubah status beberapa kali dalam satu penekanan, relay tampak berkedip, dan sistem menjadi tidak stabil. Oleh karena itu, penggunaan debounce sangat disarankan pada proyek nyata.

Kode Program Arduino Toggle Relay dengan Debouncing

Untuk mengatasi masalah bouncing, kita dapat menggunakan library ezButton. Library ini membuat proses debounce menjadi jauh lebih mudah.

 

#include <ezButton.h>


// constants won't change

const int BUTTON_PIN = 7;

const int RELAY_PIN  = 3;


ezButton button(BUTTON_PIN);


// variables will change:

int relayState = LOW;


void setup() {

  Serial.begin(9600);


  pinMode(RELAY_PIN, OUTPUT);


  button.setDebounceTime(50);

}


void loop() {

  button.loop();


  if(button.isPressed()) {

    Serial.println("The button is pressed");


    // toggle relay state

    relayState = !relayState;


    // update relay output

    digitalWrite(RELAY_PIN, relayState);

  }

}

 

Penjelasan Debouncing dengan ezButton

Library ezButton akan membantu Arduino menyaring noise dari tombol mekanis sehingga satu kali tekan hanya terbaca satu kali.

Bagian berikut digunakan untuk membuat objek tombol:

 

ezButton button(BUTTON_PIN);

 

Kemudian debounce time diatur menjadi 50 milidetik.

 

button.setDebounceTime(50);

 

Fungsi berikut wajib dipanggil pada setiap loop:

 

button.loop();

 

Arduino akan mendeteksi tombol ditekan menggunakan:

 

button.isPressed()

 

Dengan metode ini, sistem menjadi jauh lebih stabil dan akurat.

Langkah Pengujian

Setelah semua rangkaian selesai dibuat, lakukan langkah berikut:

1. Hubungkan Arduino ke komputer menggunakan kabel USB.

2. Buka Arduino IDE. 

3. Pilih board dan port yang sesuai.

4. Salin kode program ke Arduino IDE.

5. Klik tombol Upload.

6. Tekan tombol beberapa kali.

7. Perhatikan perubahan status relay.

Relay akan berubah ON dan OFF setiap kali tombol ditekan.

Aplikasi Toggle Relay dengan Arduino

Konsep toggle relay sangat sering digunakan dalam berbagai proyek elektronik dan otomasi, seperti:

- Sistem lampu otomatis

- Smart home sederhana

- Kontrol pompa air

- Pengontrol kipas

- Sistem keamanan

- Kontrol motor

- Sistem kendali perangkat listrik 

Dengan relay, Arduino dapat mengontrol perangkat bertegangan lebih tinggi yang tidak bisa langsung dikendalikan dari pin Arduino.

 

Baca juga: Arduino Button Toggle LED - Cara Menyalakan dan Mematikan LED dengan Satu Tombol 

 

 

 

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

0 on: "Arduino Button Toggle Relay dengan dan tanpa Debouncing"