极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11228|回复: 4

关于霍尔传感器计数

[复制链接]
发表于 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是中断的子程序,到处引用会混乱的.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-1-27 20:51:39 | 显示全部楼层
北斗 发表于 2015-1-26 15:38
既然是计数,那在判断了计数的标注并执行了计数的+1操作后,当然要将计数的标志还原到未触发计数的状态啊。 ...

我按照你说的修改过后运行显示,磁铁稍微碰一下就连着跳出两三个数字,不知道是程序问题还是器材问题?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-8 13:24 , Processed in 0.116440 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表