在arduino中使用中断处理布尔值

在arduino中使用中断处理布尔值,arduino,interrupt,interrupt-handling,Arduino,Interrupt,Interrupt Handling,我已经做了一些研究,我遇到了几个关于按钮如何被用作中断的例子。然而,我尝试实现的设计使用模拟传感器。现在,我想做的是让我的模拟传感器标记一个布尔值来告诉中断执行,而不是一个按钮。我该怎么做 这是我根据研究得出的结论: boolean isWall; attachInterrupt(isWall, interruptFunction, RISING); void loop() { if(analogSensor.response > 450) {

我已经做了一些研究,我遇到了几个关于按钮如何被用作中断的例子。然而,我尝试实现的设计使用模拟传感器。现在,我想做的是让我的模拟传感器标记一个布尔值来告诉中断执行,而不是一个按钮。我该怎么做

这是我根据研究得出的结论:

    boolean isWall;

    attachInterrupt(isWall, interruptFunction, RISING);

    void loop() {
        if(analogSensor.response > 450) {
                isWall = true;
        }
        normalExecution();  // what it normally does if isWall is false 
    }

    void interruptFunction() {
          // code implementation
          isWall = false;  // set isWall back to false after executing interruptFunction
    }

    void normalExecution() {
          // foo
    }

有人能证实吗?

也许我完全错了,但我一直认为Arduino中的中断是基于管脚所看到的电压,也就是说,它们是硬件中断。因此,虽然您的代码对于硬件中断是正确的,但对于变量的更改它将不起作用


这就是说,这个和这个讨论了模拟比较器实现你想要做的事情的方法。

我想我应该在布尔声明前面有一个“volatile”哦,所以我想我要寻找的是在后台每10个我们就轮询一次我的传感器的东西,而不是每次响应()。然后,每当我的传感器达到某个定义值时,它就会跳转到我的中断功能。