查看: 283|回复: 1

[未解决] 中断之间会发生冲突?

[复制链接]

该用户从未签到

发表于 2019-9-11 15:51 | 显示全部楼层 |阅读模式
本帖最后由 帕菲菲 于 2019-9-11 15:59 编辑

kittenblock中小学创客名师推荐的图形化编程软件

const byte TOUCHPAD_OUTPUT=3;
const byte TOUCHPAD_INTERRUPT=digitalPinToInterrupt(TOUCHPAD_OUTPUT);
const byte WATER_VCC=5;
void setup() {
  pinMode(TOUCHPAD_OUTPUT,INPUT);
  pinMode(WATER_VCC,OUTPUT);
  attachInterrupt(TOUCHPAD_INTERRUPT,touchpadRising,RISING);
  //attachInterrupt(TOUCHPAD_INTERRUPT,touchpadLow,LOW);
}
void touchpadRising(){
  digitalWrite(WATER_VCC,HIGH);
}
void touchpadLow(){
}
void loop(){
}

WATER_VCC输出引脚控制一个水泵,TOUCHPAD_OUTPUT输入引脚接收一个触摸板的输入。程序的思路是点击触摸板引起水泵喷水。此代码经测试可以得到预期结果。但是如果加上第8行(即去掉注释符号),无论怎样点击触摸板,水泵都不工作了。这一句将触摸板的低电平事件交给一个空方法处理,逻辑上应该是一行无效的代码,但是为什么会导致水泵无响应?LOW改成FALLING也是一样的结果。我该如何控制手指离开触摸板时停止水泵?
触摸板的输出特性是,未触摸时始终为LOW,触摸时在LOW和HIGH之间不断跳动。Arduino Uno。
  • TA的每日心情
    擦汗
    2019-7-29 00:08
  • 签到天数: 47 天

    [LV.5]常住居民I

    发表于 2019-9-11 16:47 | 显示全部楼层
    同一个中断脚(你这里是D3),只有一个中断入口,模式只能三选一:RISING/FALLING/LOW。

    你把 RISING 绑定一个函数(后台设定为RISING模式),设定为第一个函数
    再把 LOW 绑定另一个函数(后台重设为LOW模式),设定的第二个函数覆盖了第一个

    最终导致模式工作在最后一种,之前设定的模式统统失效;
    响应函数也是最后一个,之前设定的统统被覆盖
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    创客集结号:温馨水杯
    创客集结号:温馨水杯
    今天,在创客集结号平台看到一个能自动感应的杯子,不仅神奇还非常有创意,该作品主要
    Blynk与m5stack basic以及uiflow的交互玩法
    Blynk与m5stack basic以及
    Blynk与m5stack basic以及uiflow的交互玩法 [准备工作我们假设玩家已经熟悉下面的准备
    关于六足机器人的求助
    关于六足机器人的求助
    新人小白,有过从头开发机械手的经历、教育机器人51高铁游开发经历。 现在打算做一个
    Serial.read出问题了.....求大神解答!
    Serial.read出问题了.....
    如图,输入1应该是cool,但出现了这种情况,有大神知道吗?
    关于Arduino小车制作的一个疑问
    关于Arduino小车制作的一
    大家好,能不能求助一个问题:我在做Arduino小车时,使用了一块L293D驱动板与Arduino
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表