0

在我的项目中,我有三个按钮,每个按钮都会触发一个功能。

此功能必须做两件事,按下按钮时的一个动作(实际工作),但我想添加第二个功能,如果按下按钮超过 3 秒,它会做一些事情,比如调用一个函数.

到目前为止,我正在初始化中断:

attachInterrupt(0, footOne, Falling);

功能是:

void footOne(){
static unsigned long last_interrupt_time = 0;
unsigned long interrupt_time = millis();
// Debounce
if (interrupt_time - last_interrupt_time > 200){
    //Do things
    if(debug==1){Serial.println("Button 1 pressed!");}
}

last_interrupt_time = interrupt_time;
}

现在我想知道如果按钮被按下超过 3 秒,我如何更改功能以增加可能性......

记住这个函数是从中断中调用的。

谢谢!

4

1 回答 1

1

按照您现在构建程序的方式,您将需要一个外部 RTC 来执行此任务。一旦启动中断,arduino 上的内部时钟就会受到损害,因此在离开中断之前无法可靠使用。您的实现是否对时间如此敏感以至于需要中断?因为如果不是,轮询按钮的状态然后比较经过的时间将是一个非常简单的实现。但是,如果您想坚持使用中断,我会看一下volatile变量,作为在主循环和中断函数之间进行对话的一种方式。

于 2013-09-19T03:05:12.000 回答