查看: 178|回复: 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模式),设定的第二个函数覆盖了第一个

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

    本版积分规则

    热门推荐

    全国机器人等级考试配件购买
    全国机器人等级考试配件购
    本人想自己教小孩机器人等级考试,需要购买机器人等级考试的配件,可是淘宝上的太
    【Arduino】108种传感器系列实验(24)---水位传感器模块
    【Arduino】108种传感器系
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    【Arduino】108种传感器系列实验(96)---433M无线发射接收模块
    【Arduino】108种传感器系
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    【Arduino】108种传感器系列实验(93)---CSR8350蓝牙音乐模块
    【Arduino】108种传感器系
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    【Arduino】108种传感器系列实验(89)--- 4*4位 RGB LED 全彩模块
    【Arduino】108种传感器系
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表