本帖最后由 pig881 于 2016-5-14 14:54 编辑
谁用过A89 光电编码器 吗? 4根线, 码盘是100线的
从上面看下去,是 红 黑 蓝 黄 的排列顺序的,
我把红线接3.3v, 黑线接地, 蓝线接 D3口
代码这么写:
int OutL=2;
int OutR=3;
volatile long cL=0,cR=0;
unsigned long old_time=0,new_time=0; // 总时间标记
unsigned long time1 = 0, time2 = 0; //左1,右2 轮 时间标记
void setup() {
attachInterrupt(digitalPinToInterrupt(OutR),COUNTR,FALLING);
Serial.begin(9600);
}
void COUNTR()
{
if((millis()-time2)>5)
cR++;
time2=millis();
}
void loop() {
new_time=millis();
if(abs(new_time - old_time) >= 1000) // 如果计时时间已达1秒
{
Serial.print("RightMotor is ");
Serial.println(cR,DEC);
cR=0;
old_time= millis();
}
/// Serial.print("RightMotor is ");
// Serial.println(cR,DEC);
// delay(1000);
}
代码写法有没有问题?
如果用手转动轮子,是可以测得到数据的,但是如果马达直接上电,速度很快的时候,就测不到了,为什么?
|