2016年5月20日 星期五

Grove-Encoder 編碼器 測試- 使用 LinkIt Smart 7688 Duo

Grove-Encoder 編碼器 測試- 使用 LinkIt Smart 7688 Duo

****注意 LinkIt 7688 Duo 在 Arduino IDE 1.6.9 有問題 Arduino IDE 要用1.6.7***** 


     Grove-Encoder (編碼器)是增量式旋轉編碼器。增量型編碼器也稱作相對型編碼器,利用檢測脈衝的方式來計算轉速及位置,可輸出有關旋轉軸運動的資訊。

注意:這個Grove-Encoder (編碼器)模組沒按下的功能。
      
      增量型編碼器有二個輸出,分別稱為A和B,二個輸出是正交輸出,相位差為90度。二個訊號有90度的相位差,在不同旋轉方向時,二個訊號的相序也有所不同,可以利用程式將二個訊號進行解碼.根據其相序不同,在有方波時使一計數器上數或是下數,此計數器的值即可對應轉軸的旋轉量。


Grove-Encoder 

Seeed Studio 料號 : 151126041 包裝內容 : 編碼器模組 x 1  Grove 線材 x 1。



將 Grove 線材插入編碼器 。


 Grove 線材另一頭插在 LinkIt Smart 7688 Duo 底座的 D4 , OLED 插在 I2C。



插入 USB 與電腦連線。



開啟 Arduino 輸入以下程式碼 


//*******程式開始********

 /* 此為用 I/O 捕捉編碼器失誤率有點高要降低錯誤率須使用中斷 */
  
  #include <Wire.h>
  #include <SeeedOLED.h>

 int val; 
 int encoder0PinA = 4;     //編碼器 A 接 Pin4
 int encoder0PinB = 5;     //編碼器 B 接 Pin5
 int encoder0Pos = 0;      //初始值為0
 int encoder0PinALast = LOW;
 int n = LOW;

 void setup() 
 { 
    Wire.begin();
   SeeedOled.init();                   //初始化OLED
   SeeedOled.clearDisplay();           //清除OLED
   SeeedOled.setNormalDisplay();      //設定OLED為正常顯示
   SeeedOled.setPageMode();          //設定OLED為頁模式

   pinMode (encoder0PinA,INPUT);      //設定編碼器 A 為輸入 
   pinMode (encoder0PinB,INPUT);      //設定編碼器 B 為輸入

 } 

 void loop() { 
   n = digitalRead(encoder0PinA);                   //開始捕捉編碼器 A 的變化
   if ((encoder0PinALast == LOW) && (n == HIGH)) {
     if (digitalRead(encoder0PinB) == LOW) {
       encoder0Pos--;
     } else {
       encoder0Pos++;
     }
      SeeedOled.setTextXY(0,0);           //游標移至0,0
      SeeedOled.putString("      ");       //列出空白
      SeeedOled.setTextXY(0,0);           //游標移至0,0
      SeeedOled.putNumber(encoder0Pos);  //輸出編器的值
     
   } 
   encoder0PinALast = n;
 } 

//******程式結束*******


確認 工具 > 版子 序列埠 是否正確。



按 "上傳 "。


詢問存檔  "Encoder" 存檔。


程式上傳中。


程式上傳完成。


上傳完成後 旋轉 Encoder 順時針轉數字會增加逆時針轉數字會減少。




參考資料 : 聯發科創意實驗室  http://home.labs.mediatek.com/?lang=zh-hans
                    Arduino LLC            https://www.arduino.cc/

1 則留言: