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
| Komponen | Jumlah | Keterangan |
|---|---|---|
| Arduino Uno | 1 | Mikrokontroler utama |
| Rotary Encoder | 1 | Enkoder putar dengan tombol tekan |
| Kabel jumper | 5 | Untuk koneksi pin |
Wiring Diagram Rotary Encoder ke Arduino Uno

Berdasarkan gambar di atas, berikut koneksi antar pin:
| Pin Encoder | Arduino Uno |
|---|---|
| CLK | D2 |
| DT | D3 |
| SW (Switch) | D4 |
| VCC | 5V |
| GND | GND |
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
ezButtonmembantu membaca tombol dengan stabil.- Deteksi arah berdasarkan perubahan sinyal pada pin
CLKdanDT. - Saat diputar, nilai
counterakan bertambah atau berkurang tergantung arah putaran. - Tombol
SWdapat digunakan untuk reset counter atau fungsi tambahan lain.
Langkah Pengujian
- Rangkai kabel sesuai wiring diagram.
- Upload kode di atas ke board Arduino Uno.
- Buka Serial Monitor di baudrate 9600.
- Putar knob encoder: lihat nilai counter naik atau turun.
- Tekan tombol encoder: pastikan muncul pesan “Tombol Ditekan!” di monitor.
Tips Tambahan
- Rotary encoder bisa digunakan untuk mengontrol menu, pengaturan 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




