|
本帖最后由 kingsouth 于 2014-1-27 19:16 编辑
本人是新手 第一次发帖 望各位大侠指点 自己的写的编码器程序如下:
#define PinA 2 //中断0
unsigned long time;
unsigned long time1;
long count = 0; //计数值
long num = 0;//个数
double Speed;
//初始化
void setup()
{
Serial.begin(9600); //窗口初始化
pinMode(PinA,INPUT); //D2脚为输入
attachInterrupt(0, blinkA, FALLING); //注册中断0调用函数blinkA
time = millis(); //时间初值
time1 = millis(); //时间初值
}
//主体程序
void loop()
{
if(time!=time1)
{
double Speed=3.14*6.5/100/(time-time1)*1000 ;//用的是tt马达 码盘是100格的 轮子直径6.5厘米
//Serial.println(time1);
// Serial.println(time);
Serial.println(Speed);
Serial.println();
Serial.println();
delay(100);
}
}
//中断0调用函数
void blinkA()
{
count ++;
if(count%2==1)
time= millis();
if(count%2==0)
time1= millis();
}
输出结果如图 不知道为什么会这样 请高人指点 谢谢
|
|