arduino与编码器

接触arduino一段时间了。突然接到一个要求 要用到编码器。(一直没用过)

找了个600线的。网上找了很几篇帖子,拿来试了试,发现慢速的时候还好,转动一快就丢数。花了个把小时多琢磨可以做以下操作。

。。。

。。。

。。。(具然不能截图复制,初玩,见谅见谅)

arduino与编码器_第1张图片

(发现上传的图不清晰,还不知道怎么操作,修改贴出代码)

#define PinA 2 //外部中断0

#define PinB 8 //编码器的OUTB信号连接到数字端口8

unsigned long time1 = 0; // 时间标记

long count = 0;

void setup()

{

pinMode(PinA, INPUT);

pinMode(PinB, INPUT);

attachInterrupt(0, Code, FALLING);//脉冲中断函数

Serial.begin (9600);

}

void loop()

{

Serial.println (count);

}

// 编码器计数中断子程序

void Code()

{

//为了不计入噪音干扰脉冲,

//当2次中断之间的时间大于5ms时,计一次有效计数

if ((millis() - time1) > 5)

{

//当编码器码盘的OUTA脉冲信号下跳沿每中断一次,

if ((digitalRead(PinA) == LOW) && (digitalRead(PinB) == HIGH))

{

count--;

}

else

{

count++;

}

}

time1 == millis();

}

你可能感兴趣的:(arduino)