Arduino | 旋轉編碼器模組使用(1)
關鍵字:arduino旋轉編碼器使用、arduino旋轉編碼器模組
繼上一篇<
Arduino | 旋轉編碼器模組使用(0)---問題分析>後,這一篇將介紹旋轉編碼器模組的使用心得與筆記。
如果只是需要測試程式碼,請直接往下拉,或是到黑修斯的
GitHub取用。
腳位說明
| 腳位 | 說明 | 
| CLK | 相當於A相 | 
| DT | 相當於B相 | 
| SW | 編碼器按鈕腳位(編碼器上有開關的功能,可以按壓) | 
| + | 正電源 | 
| GND | 接地 | 
腳位觸發變化
 
通電後,CLK、DT、SW都是
高電位(HIGH),當觸發時會變
低電位(LOW),而SW(按鈕)被按下時變為
低電位(LOW)。
 程式接腳
| 腳位 | 
  | 連接Arduino開發板腳位 | 
| CLK | <---> | Arduino Pin6 | 
| DT | <---> | Arduino Pin7 | 
| SW | <---> | 本程式不使用 | 
| + | <---> | 正電源 5V or 3.3V | 
| GND | <---> | 接地 | 
程式碼
程式流程圖與動作說明
從下圖得知,A相、B相的動作原理(
A相為藍色,
B相為綠色)。
正轉時 ,A跟B訊號為相反。
反轉時,A跟B訊號一樣。
透過上述規則來判斷正反轉。
如何判斷馬達運轉
要如何判斷馬達運轉呢,透過起始狀態( aState)與最後狀態(aLastState)來做判斷,請見程式流程圖或程式碼說明。
  | 
| 程式流程圖與程式碼 | 
  | 
| 程式流程圖 | 
轉動編碼器
最後可以試著轉動編碼器,再觀察序列輸出視窗。
最後的問題補充
1.訊號丟失的問題:當轉速過快,快到晶片的讀取速度或程式掃描的速度追不上,就會發生。
解決方案:使用中斷計數,
請見下一篇
Reference 
How Rotary Encoder Works and How To Use It with Arduino
轉貼本文時,需註明來自黑修斯隨手札記原創作者 hughes chen(黑修斯),及附上原文連結,同時 禁止修改,禁止商業使用 。  
 
 
 
0 留言
不一定能即時回覆問題,有時間會盡量答覆。