我编写了一个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);
}