Daftar Isi:

Tutorial Rotary Encoder Dengan Arduino: 6 Langkah
Tutorial Rotary Encoder Dengan Arduino: 6 Langkah

Video: Tutorial Rotary Encoder Dengan Arduino: 6 Langkah

Video: Tutorial Rotary Encoder Dengan Arduino: 6 Langkah
Video: BELAJAR ARDUINO #78 - Rotary Encoder Sangat Berguna 2024, Juli
Anonim
Tutorial Rotary Encoder Dengan Arduino
Tutorial Rotary Encoder Dengan Arduino

Rotary encoder adalah komponen elektronik yang mampu memonitor pergerakan dan posisi saat berputar. Rotary encoder memanfaatkan sensor optik yang dapat menghasilkan pulsa ketika rotary encoder berputar. Penerapan rotary encoder biasanya sebagai monitor gerak mekanik atau robotik juga dapat digunakan untuk pemilihan menu pada tampilan. Rotary encoder memiliki dua output sehingga dapat membedakan putaran negatif (CW) dan positif (CCW) dan juga memiliki satu tombol.

Langkah 1: Aliran Pulsa Rotary Encoder

Aliran Pulsa Rotary Encoder
Aliran Pulsa Rotary Encoder

Aliran pulsa yang dihasilkan oleh rotary encoder berikut seperti gambar di atas.

Langkah 2: Pinout dari Rotary Encoder

Pinout dari Rotary Encoder
Pinout dari Rotary Encoder

Penjelasan:

  • GND GND
  • + +5V
  • Tombol SW dari rotary encoder saat ditekan
  • Data DT
  • Data CLK 2

Salah satu pin DT atau CLK harus terhubung ke kaki interupsi Arduino Uno, atau kedua DT dan CLK terhubung ke pin interupsi.

Langkah 3: Skema

Skema
Skema
  • GND GND Arduino Uno
  • + +5V Arduino Uno
  • SW PIN 4 Arduino Uno
  • DT PIN 3 Arduino Uno
  • CLK PIN2 Arduino Uno

Langkah 4: Kode

Kode
Kode

Pada tutorial berikut yang akan digunakan sebagai interupsi adalah PIN 2 Arduino Uno, sedangkan PIN 3 hanya digunakan sebagai input biasa.

#define encoder0PinA 2#define encoder0PinB 3 #define encoder0Btn 4 int encoder0Pos = 0; void setup() { Serial.begin(9600); pinMode(encoder0PinA, INPUT_PULLUP); pinMode(encoder0PinB, INPUT_PULLUP); pinMode(encoder0Btn, INPUT_PULLUP); attachInterrupt(0, doEncoder, CHANGE); } int valRotary, lastValRotary; void loop() { int btn = digitalRead(encoder0Btn); Serial.print(btn); Serial.print(""); Serial.print(valRotary); if(valRotary>lastValRotary) { Serial.print("CW"); } jika(valRotary {

Serial.print("CCW");

} lastValRotary = valRotary; Serial.println(" "); penundaan (250); } void doEncoder() { if (digitalRead(encoder0PinA) == digitalRead(encoder0PinB)) { encoder0Pos++; } else { encoder0Pos--; } valRotary = encoder0Pos/2.5; }

Pada baris 10 sketsa di atas digunakan untuk mengaktifkan interupsi pin 2 Arduino Uno. Pada fungsi "doEncoder" dihitung dari rotary encoder. Jika nilai DT dan CLK (pin interupsi Arduino Uno) sama, maka variabel encoder0Pos akan bertambah/ditambah, selain kondisi tersebut variabel encoder0Pos akan dikurangi.

Langkah 5: Penjelasan

Nilai ValRotary adalah nilai jumlah langkah yang telah dijalankan. Nilai ValRotary diperoleh dari nilai pembacaan rotary sensor encoder dibagi 2,5. Nilai 2,5 diperoleh dari pengujian, karena satu langkah dari rotary encoder dapat melebihi 1, jadi bagilah dengan 2,5 untuk nilainya sesuai dengan langkah dan juga penambahan penundaan baca.

Sedangkan pada line 19 – 25 merupakan program untuk menentukan apakah rotary encoder CW atau CCW. Penjelasan baris 19 - 25 adalah ketika pembacaan rotary encoder saat ini lebih besar dari data putaran sebelumnya maka dinyatakan sebagai CW. Sedangkan jika pembacaan saat ini lebih kecil dari pembacaan sebelumnya maka dinyatakan sebagai CCW.

Langkah 6: Keluaran

Keluaran
Keluaran

1 = nilai tombol start putaran saat belum ditekan

Direkomendasikan: