Loops Arduino中断延迟功能

Loops Arduino中断延迟功能,loops,arduino,interrupt,led,Loops,Arduino,Interrupt,Led,在我的下一个项目中,我使用了4个延迟LED(10000)。我需要一个用于取消此循环的函数,并使用新的延迟值(例如100)重新开始 我启用了中断,当我按下一个按钮时,延迟在一轮后变为100。我得等10秒钟。。可以用新的值重新启动循环函数吗?哇,这是粗鲁的ignacio 至少要有帮助 您可以这样做,但不能像您已经实现的那样 在这种情况下使用延迟是不好的。更好的实现方法是使用如下while循环: int delayLED = 10000; int beginMillis = millis(); w

在我的下一个项目中,我使用了4个延迟LED(10000)。我需要一个用于取消此循环的函数,并使用新的延迟值(例如100)重新开始

我启用了中断,当我按下一个按钮时,延迟在一轮后变为100。我得等10秒钟。。可以用新的值重新启动循环函数吗?

哇,这是粗鲁的ignacio 至少要有帮助

您可以这样做,但不能像您已经实现的那样

在这种情况下使用延迟是不好的。更好的实现方法是使用如下while循环:

int delayLED = 10000;

int beginMillis = millis();

while( millis() - beginMillis < delayLED)
{
    // insert the code for your "interrupt" here
    // kinda like this
    if(button pressed)
    {
        delayLED = 100;
        break;
    }
}
int delayLED=10000;
int beginMillis=millis();
while(millis()-beginMillis
这只是一个模板,不是一个完整的答案。 如果您还有其他问题,请告诉我


快乐编码

有时答案是“不,你把实现搞砸了。再试一次,这次是指定要求。”我想补充一句:看看例子!使用arduino编写的第一个教程是如何延迟闪烁LED,第二个教程没有延迟。在试图浪费时间之前,试着了解一些东西是如何工作的……不确定你在谈论哪个示例,但可以肯定的是,arduino.cc网站上的延迟函数本身有一个很好的说明,就是不将其用于计时代码。我认为对于刚接触Arduino的人来说,这是一个完全正确的问题。无论他们是在示例(?)中,还是在文档中,还是在这样的网站上提问,我实际上也面临着同样的问题,我想知道是否还有其他方法?我不喜欢这个解决方案的地方是,如果在标志变量求值之后调用中断,那么函数将执行我们不希望执行的内容。顺便说一句,这似乎是一种共享。有没有一种方法可以真正展开函数堆栈,或者在我们进入中断调用时只指向另一个地址内存?我想确定这是否真的是可能的,如果我能打破我的芯片这样做?没有池。这将根据当前的毫秒()不断计算。我不明白为什么你会认为这会破坏你的芯片,这种评估一直在发生。之所以这样写,是因为OP想要中断当前计时并立即启动新计时。该函数通过循环每个周期来实现这一点,这样,如果新的延迟时间已经过去,它将立即评估并开始新的计时。你到底想干什么?