Kontrol Rotary Encoder dengan Arduino Uno

Kontrol Rotary Encoder dengan Arduino Uno

Pelajari cara menggunakan rotary encoder dengan Arduino Uno, lengkap dengan wiring diagram, kode program, dan cara kerja enkoder putar.

Rotary Encoder adalah perangkat input yang sering digunakan dalam proyek Arduino untuk mendeteksi arah dan jumlah putaran. Tidak seperti potensiometer biasa, rotary encoder bisa diputar tanpa batas dan memberikan sinyal digital berdasarkan rotasi, baik searah jarum jam (CW) maupun berlawanan arah jarum jam (CCW). Dalam tutorial ini, kamu akan belajar bagaimana cara menghubungkan dan memprogram rotary encoder menggunakan board Arduino Uno.

Apa Itu Rotary Encoder?

Rotary encoder adalah sensor rotasi yang menghasilkan sinyal digital. Alat ini memiliki dua pin utama untuk membaca arah putaran (CLK dan DT) serta satu pin tombol (SW). Beberapa penggunaan umum rotary encoder adalah untuk kontrol volume digital, pemilih menu, atau input nilai.

Spesifikasi umum rotary encoder:

  • Tegangan kerja: 3.3V – 5V
  • Jenis sinyal: Digital
  • Output: CLK, DT, SW

Alat dan Bahan

KomponenJumlahKeterangan
Arduino Uno1Mikrokontroler utama
Rotary Encoder1Enkoder putar dengan tombol tekan
Kabel jumper5Untuk koneksi pin

Wiring Diagram Rotary Encoder ke Arduino Uno

Berdasarkan gambar di atas, berikut koneksi antar pin:

Pin EncoderArduino Uno
CLKD2
DTD3
SW (Switch)D4
VCC5V
GNDGND

Kode Program Lengkap

Gunakan pustaka ezButton untuk membaca tombol dengan stabil dan bebas noise. Pastikan library ini sudah diinstal dari Library Manager Arduino IDE.

#include <Arduino.h>
#include <ezButton.h>

#define CLK_PIN D2
#define DT_PIN D3
#define SW_PIN D4
#define DIRECTION_CW 0
#define DIRECTION_CCW 1 

int counter = 0;
int direction = DIRECTION_CW;
int CLK_state;
int prev_CLK_state;

ezButton button(SW_PIN); 

void setup() {
  Serial.begin(9600);
  pinMode(CLK_PIN, INPUT);
  pinMode(DT_PIN, INPUT);
  button.setDebounceTime(50); // debounce tombol 50ms

  prev_CLK_state = digitalRead(CLK_PIN);
}

void loop() {
  button.loop();

  CLK_state = digitalRead(CLK_PIN);
  if (CLK_state != prev_CLK_state && CLK_state == HIGH) {
    if (digitalRead(DT_PIN) == HIGH) {
      counter--;
      direction = DIRECTION_CCW;
    } else {
      counter++;
      direction = DIRECTION_CW;
    }

    Serial.print("Arah: ");
    Serial.print(direction == DIRECTION_CW ? "Searah Jarum Jam" : "Berlawanan");
    Serial.print(" | Counter: ");
    Serial.println(counter);
  }

  prev_CLK_state = CLK_state;

  if (button.isPressed()) {
    Serial.println("Tombol Ditekan!");
  }
}

Penjelasan Program

  • ezButton membantu membaca tombol dengan stabil.
  • Deteksi arah berdasarkan perubahan sinyal pada pin CLK dan DT.
  • Saat diputar, nilai counter akan bertambah atau berkurang tergantung arah putaran.
  • Tombol SW dapat digunakan untuk reset counter atau fungsi tambahan lain.

Langkah Pengujian

  1. Rangkai kabel sesuai wiring diagram.
  2. Upload kode di atas ke board Arduino Uno.
  3. Buka Serial Monitor di baudrate 9600.
  4. Putar knob encoder: lihat nilai counter naik atau turun.
  5. Tekan tombol encoder: pastikan muncul pesan “Tombol Ditekan!” di monitor.

Tips Tambahan

  • Rotary encoder bisa digunakan untuk mengontrol menupengaturan volume, atau navigasi tampilan LCD.
  • Gunakan library tambahan seperti ClickEncoder untuk fitur lanjutan seperti interrupt.
  • Pastikan koneksi kuat dan kabel tidak longgar agar pembacaan akurat.

Kesimpulan

Rotary encoder sangat berguna dalam aplikasi antarmuka pengguna pada proyek Arduino. Dengan memahami prinsip kerja dan penerapannya, kamu bisa membuat sistem kontrol yang lebih interaktif dan efisien. Tutorial ini memberikan dasar pemrograman rotary encoder di Arduino Uno, yang bisa kamu kembangkan lebih jauh sesuai kebutuhan proyekmu.

Diskusi lebih lanjut kontak di bawah :

Media sosial lainnya :

Baca juga :

Cara Menggunakan Motor Stepper ULN2003 dengan Arduino Uno

Cara Menggunakan Sensor Ampere Voltage PZEM-004T dengan Arduino Uno