中断不稳定,怎么办-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9836|回复: 14

中断不稳定,怎么办

[复制链接]
发表于 2014-5-2 22:14 | 显示全部楼层 |阅读模式
大家好,请教一下为什么我按一次按键,就产生2次外部中断,程序如下:
int q;

void setup()
{    pinMode(2,INPUT);

  attachInterrupt(0, blink, FALLING );
   
     Serial.begin(9600);
}

void loop()
{   
  digitalWrite(2,HIGH);
}
void blink()
{   
delay(10);
if(digitalRead(2)==LOW)
{
   q++;
   Serial.println(q);
}
}
发表于 2019-6-10 11:32 | 显示全部楼层
本帖最后由 huangyunfa 于 2019-6-10 11:40 编辑

检测有效的一次红外后,置一个标志,然后到主程序中去延时,延时结束后,才可以接受中断的数据。这样可以实现的。

red.png
发表于 2014-5-2 22:24 | 显示全部楼层
按键需要上下拉电阻哦
 楼主| 发表于 2014-5-2 22:56 | 显示全部楼层
感谢楼上的回答,但是要怎么拉啊,我的目的是按一次按键产生因此中断就加一,那么我的程序要怎么改啊
 楼主| 发表于 2014-5-2 22:58 | 显示全部楼层
但是我用红外线感受一次,也会产生2次中断
发表于 2014-5-3 01:39 | 显示全部楼层
如果你中断信号是低电平,那你就应该在这个IO口接一个,10K~20K的上拉电阻到VCC
 楼主| 发表于 2014-5-3 11:30 | 显示全部楼层
我用的是下降沿触发,那为什么我用那个红外线感受器的信号当触发信号,也会发生一次触发2次或更多次中断的现象
 楼主| 发表于 2014-5-3 11:34 | 显示全部楼层
加了上拉电阻也不行啊
发表于 2014-5-5 13:30 | 显示全部楼层
1.确定中断是上升沿中断,下降沿中断还是上升下降沿都中断;
2.确定硬件有消除抖动?
3.软件是否有做消抖。
发表于 2019-6-10 10:25 | 显示全部楼层
可以接个开关,先试试。我也遇到过。。。。
发表于 2019-6-10 11:00 | 显示全部楼层
zwllive 发表于 2014-5-3 11:30
我用的是下降沿触发,那为什么我用那个红外线感受器的信号当触发信号,也会发生一次触发2次或更多次中断的 ...

那是因为红外有时候触发了2次,你可以处理一下,接受到有效的一次红外信号后,delay一下,连续的第二次忽略掉,应该就可以了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 09:31 , Processed in 0.136307 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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