用于arduino输出错误的绝对编码器

时间:2016-10-29 13:06:53

标签: arduino encoder

我编写了一个Arduino代码,用于从绝对旋转编码器(ep50s8-1024-2f-p-24)获取10位数据。

当编码器处于静止状态时,它会给出正确的值。但是当它旋转时,它首先给出不正确的值然后修正值。

如果值介于511和1023之间,则首先给出1023,持续0.5秒,然后校正值。请帮助。

这是我写的代码:

#include <digitalWriteFast.h>
void setup() {
    pinModeFast(2,INPUT);
    pinModeFast(3,INPUT);
    pinModeFast(4,INPUT);
    pinModeFast(5,INPUT);
    pinModeFast(6,INPUT);
    pinModeFast(7,INPUT);
    pinModeFast(8,INPUT);
    pinModeFast(9,INPUT);
    pinModeFast(10,INPUT);
    pinModeFast(11,INPUT);
    for(int i=2;i<12;i++)
    {
        digitalWriteFast(i,LOW);
    }
    Serial.begin(9600);
}

void loop() {
    const int b0= digitalReadFast(2);
    const int b1= digitalReadFast(3);
    const int b2= digitalReadFast(4);
    const int b3= digitalReadFast(5);
    const int b4= digitalReadFast(6);
    const int b5= digitalReadFast(7);
    const int b6= digitalReadFast(8);
    const int b7= digitalReadFast(9);
    const int b8= digitalReadFast(10);
    const int b9= digitalReadFast(11);
    const float val= b9*512 + b8*256 + b7*128 + b6*64 + b5*32 + b4*16 + b3*8 + b2*4 + b1*2 + b0*1 ;
    const float deg= 360.0/1024*val;
    Serial.print(val);
    Serial.print(" ");
    Serial.println(deg);
}

0 个答案:

没有答案