Tutorial cara menggunakan module Rotary Encoder Switch pada Arduino
Rotary encoder switch adalah perangkat elektro-mekanik yang mengubah gerak rotasi menjadi informasi digital atau analog. Bentuknya terlihat seperti potensiometer tetapi bisa berputar secara terus menerus (tanpa batas) baik searah jarum jam atau berlawanan arah jarum jam.
Terdapat beberapa jenis encoders rotary yaitu type Absolut dan type Relatif (inkremental).
Type Absolut nilai Outputnya tergantung dari sudut shaft terhadap poros sedangkan type Relatif
(inkremental) nilai/data Outnya berdasar pada Step/langkah dan arah putaranya,type ini lah yang banyak digunakan secara umum dan akan kita bahas lebih lanjut.
Ada 2 versi module Rotary Encoder yang umum kita jumpai di pasaran yaitu yang sudah lengkap dengan 'Breakout Board' dan yang masih 'pretelan', keduanya mempunyai fungsi dan jenis yang sama hanya saja untuk yang dilengkapi breakout biasa digunakan untuk prototype/simulasi/pelatihan karena sudah dilengkapi pin header sedangkan yang masih berupa komponen biasanya langsung ke pasang pada Development board sesuai posisi dan fungsinya.
Perhatikan Pin Out dari kedua jenis Rotary Encoder berikut :
Rotary Encoder memiliki 2 pin out data ,saya sebut Out A dan Out B atau anda dapat pula menyebutnya out maju dan out mundur.Sementara itu pada bagian tengah dilengkapi Center Switch atau saklar tekan yang dapat kita gunakan layaknya push button dengan cara menekan tuas/knop nya.
Penggunaan Rorary Encoder Switch biasanya menggunakan metode Active LOW baik untuk output data nya ataupun Center Switch nya, sehingga kita membutuhkan Resistor Pull-Up untuk menstabilkan digital Out A dan B saat kita gunakan menuju mikrokontroller.Untuk Jenis yang dilengkapi breakout board biasanya sudah disertai resistor pullup pada board nya,sedangkan untuk jenis tanpa breakout (pretelan) kita membutuhkan Resistor 10K untuk melakukan pullup Out A dan Out B ke VCC,meskipun demikian dalam pemrograman Arduino kita bisa menggunakan fungsi internal pullup pada i/o Arduino agar tidak menambahkan komponen resistor (gunakan pinMode (x, INPUT_PULLUP); ).
Incremental Rotary Encoder Switch Quadrature Output Waveform
Sebuah rotary encoder inkremental menghasilkan dua sinyal output saat porosnya berputar yang juga disebut Quadrature Ouptut. Tergantung pada arah putaranya, salah satu sinyal memimpin/keluar lebih dulu dari sinyal lainnya. Anda dapat melihat bentuk gelombang sinyal output dari sebuah rotary encoder inkremental dan urutan bit urutan seperti pada gambar di bawah ini.Contoh Program sederhana menggunakan Rotary Encoder Switch dan Arduino
Berikut adalah contoh sederhana dari penerapan penggunaan Rotary encoder bersama Arduino.Module yang kita butuhkan :
-Arduino Uno R3 ( Atmega328P )
-Module Rotary Encoder
-Beberapa kabel jumper dupont
-Software Arduino IDE (disarankan versi 1.6.12 atau diatasnya)
Wiring diagram :
Rotary Encoder <--> Arduino Uno
VCC <--> Pin 5V
GND <--> Pin GND
OUT A <--> Pin D2
OUT B <--> Pin D3
Switch <--> Pin D4
Sketch Coding Arduino :
klik tombol buka pada spoiler dibawah ini untuk melihat source code nya.
Source Code:
Rangkai rotary encoder module ke Arduino kemudian upload sketch coding di atas.Setelah selesai upload buka Serial monitor Arduino IDE pada baudrate 9600 dan coba melakukan putaran pada Rotary encoder dan lihat angka yang ada di Serial Monitor,untuk mereset angka anda bisa menekan center switch pada module Rotary encoder.
Demo Audio Tone Control menggunakan Rotary Encoder Switch dan LCD 1602
Berikut adalah contoh (Versi Demo) dari penerapan penggunaan Rotary encoder sebagai Tone Control atau Audio Processing dan ditampilkan pada LCD 1602 dengan kontroller Arduino.Module yang kita butuhkan :
-Arduino Uno R3 ( Atmega328P )
-Module Rotary Encoder
-Beberapa kabel jumper dupont
-LCD 1602 yang sudah menggunakan i2C
-Software Arduino IDE (disarankan versi 1.6.12 atau diatasnya)
Library
Download library yang dibutuhkan untuk program ini :
-Library i2C LCD Download
(Apabila anda belum pernah menambahkan External libraries pada Arduino IDE silahkan lihat video tutorial berikut ini)
Wiring diagram :
Rotary Encoder <--> Arduino Uno
VCC <--> Pin 5V
GND <--> Pin GND
OUT A <--> Pin D2
OUT B <--> Pin D3
Switch <--> Pin D4
LCD 1602 i2C <--> Arduino Uno
VCC <--> Pin 5V
GND <--> Pin GND
SDA <--> Pin A4
SCL <--> Pin A5
(Jika anda adalah pemula dalam penggunaan LCD 1602 /i2c module saya menyarankan untuk melihat artikel berikut terlebih dulu)
Source Code:
(Jika anda adalah pemula dalam penggunaan LCD 1602 /i2c module saya menyarankan untuk melihat artikel berikut terlebih dulu)
Lihat Artikel
Pada program Demo audio tone control ini anda dapat memutar Rotary encoder ke kanan atau kiri untuk menggeser menu dan menekan center switch pada encoder untuk masuk ke dalam submenu.Setelah masuk ke dalam submenu maka fungsi putaran encoder akan berubah menjadi increas dan decrease value pada submenu,untk kembali ke menu utama (keluar dari sub menu) silahkan tekan kembali tombol center switch.
Semoga artikel ini bisa menginspirasi anda.
-Thanks
by Dani Rajacell
aku mau nanya kalau mau gerakin 2 motor menggunakan encorder itu gimana ya?
BalasHapuspas di kompile kok "expected unqualified-id before '.' token" gimana solusinya ?
BalasHapus