[問題] ARDUINO編碼器 記數
以下是小弟使用的編碼器
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)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章