Translate

Cara Mengakses Rotary Encoder Menggunakan Arduino

Cara Mengakses Rotary Encoder Menggunakan Arduino


          Pada kesempatan yang berbahagia kali ini saya akan menjelaskan mengenai bagaimana cara mengakses sebuah rotary encoder modul menggunakan Arduino Uno kemudian nilai step dari rotary encoder ditampilkan pada LCD 16x2. untuk aplikasi dari alat ini sangatlah banyak salah satunya yaitu untuk pengatur nilai suatu parameter seperti volume, batas atas temperature, batas atas nilai sensor dan sebagainya. rotary encoder sejatinya hanyalah switch yang mana jika diputar akan menghasilkan sinyal kotak / square (HIGH - LOW) namun jika tidak diputar maka tidak akan menghasilkan sinyal kotak. untuk lebih jelasnya berikut adalah skema dan programnya.




a. Arduino Uno




b. Rotary Encoder Modul




c. LCD 16x2 + I2C






d. Program Arduino IDE

#include <Wire.h>  // i2C Conection Library
#include <LiquidCrystal_I2C.h>  //i2C LCD Library
LiquidCrystal_I2C lcd(0x27, 16, 2);


 #define outputA 6
 #define outputB 7

 float counter = 0;
 int aState;
 int aLastState; 

 void setup() {
  
    lcd.begin();
    lcd.noCursor();
    lcd.clear();
   
   pinMode (outputA,INPUT);
   pinMode (outputB,INPUT);
  
   Serial.begin (9600);
   // Reads the initial state of the outputA
   aLastState = digitalRead(outputA);  
 }

 void loop() {
   aState = digitalRead(outputA); // Reads the "current" state of the outputA
   // If the previous and the current state of the outputA are different, that means a Pulse has occured
   if (aState != aLastState){    
     // If the outputB state is different to the outputA state, that means the encoder is rotating clockwise
     if (digitalRead(outputB) != aState) {
       counter = counter + 0.5;
     } else {
       counter = counter - 0.5;
     }
     int counterx = counter;
    
     Serial.print("Position: ");
     Serial.println(counterx);

   lcd.setCursor(0,0);
   lcd.print("STEP=");
   lcd.print(counterx);
   lcd.print("        ");
  
 }   
   aLastState = aState; // Updates the previous state of the outputA with the current state
 }






e. VIDEO HASILNYA









No comments:

Post a Comment