shaka 发表于 2015-1-25 10:55:55

关于霍尔传感器计数

int pin=2;
int i=0;
int val=0;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(pin,INPUT);
attachInterrupt(0,hello,FALLING);
}

void loop() {
if(val==LOW)
{
    hello();
}
}

void hello(){
i++;
Serial.println(i,DEC);
}


当霍尔传感器磁铁靠近时记1,由此计数,上面是我编的程序,可是当磁铁靠近时,串口监视器出来的一长串数字,请各位大神帮忙看一下有什么问题,多谢{:soso__32cb6a5bdeb3e366-3d2236597c0f1c5e-5d0fc96d45efe1f4fcd5200cef1f0b86.jpg_1:}

林定祥 发表于 2015-1-25 20:12:37

loop做空,拿掉中间的程序。

北斗 发表于 2015-1-26 15:38:34

既然是计数,那在判断了计数的标注并执行了计数的+1操作后,当然要将计数的标志还原到未触发计数的状态啊。
说白了得加一句:val=HIGH;
等待val再次变为LOW时,执行hello()。

林定祥 发表于 2015-1-26 15:56:18

hello是中断的子程序,到处引用会混乱的.

shaka 发表于 2015-1-27 20:51:39

北斗 发表于 2015-1-26 15:38 static/image/common/back.gif
既然是计数,那在判断了计数的标注并执行了计数的+1操作后,当然要将计数的标志还原到未触发计数的状态啊。 ...

我按照你说的修改过后运行显示,磁铁稍微碰一下就连着跳出两三个数字,不知道是程序问题还是器材问题?
页: [1]
查看完整版本: 关于霍尔传感器计数