[問題] ARDUINO編碼器 記數

看板C_and_CPP (C/C++)作者 (sbk8027)時間12年前 (2013/08/16 13:08), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
以下是小弟使用的編碼器 http://www.shayye.com.tw/pdf/Magnetic-Encoders.pdf 使用TWO CHANNEL 所以AB項各接了左下角電路 用以下程式碼 int val; int encoder0PinA = 2; int encoder0PinB = 3; int encoder0Pos = 0; int x; int encoder0PinALast = LOW; int n = LOW; void setup() { pinMode (encoder0PinA,INPUT); pinMode (encoder0PinB,INPUT); Serial.begin (9600); } void loop() { n = digitalRead(encoder0PinA); if ( (n == HIGH)) { if (digitalRead(encoder0PinB) == LOW) { encoder0Pos--; } else { encoder0Pos++; } x=encoder0Pos; Serial.println(x); } encoder0PinALast = n; } 但馬達轉一圈記了360次 以霍爾元件來說不是應該是轉一圈記一次嗎? 想請問一下是哪裡出了問題 如果說 x=encoder0Pos/360; Serial.println(x); 這樣寫的話 變成假設第一圈就會一直讀11111111111111.....直到第二圈22222…… 但是這樣的話 讀到第15數字太多就LAG 還請版上大大幫忙是哪裡出了問題 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.233.40.22 ※ 編輯: sbk8027 來自: 118.233.40.22 (08/16 13:10)
文章代碼(AID): #1I3RFK0f (C_and_CPP)
文章代碼(AID): #1I3RFK0f (C_and_CPP)