Function 在中断内调用库
我这里有一个代码,当按下按钮时,LED将闪烁3-10秒,然后持续15分钟。现在,我想做的是,如何调用tinyGPS.h在闪烁3-10秒之后执行?我已经创建了一个函数,但我没有运气Function 在中断内调用库,function,arduino,interrupt,Function,Arduino,Interrupt,我这里有一个代码,当按下按钮时,LED将闪烁3-10秒,然后持续15分钟。现在,我想做的是,如何调用tinyGPS.h在闪烁3-10秒之后执行?我已经创建了一个函数,但我没有运气 #include "TinyGPS/TinyGPS.h" int buttonPin = 0; int ledPin = 1; int held = 5; int ledState = LOW; int buttonState; int lastButtonSta
#include "TinyGPS/TinyGPS.h"
int buttonPin = 0;
int ledPin = 1;
int held = 5;
int ledState = LOW;
int buttonState;
int lastButtonState = LOW;
long lastDebounceTime = 0;
long debounceDelay = 50;
void setup()
{
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, ledState);
}
void loop()
{
int reading = digitalRead(buttonPin);
if (reading != lastButtonState)
{
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay)
{
if (reading != buttonState)
{
buttonState = reading;
if (buttonState == HIGH)
{
int cntr=10;
do
{
digitalWrite(ledPin, HIGH);
delay(200);
digitalWrite(ledPin, LOW);
delay(200);
cntr = cntr-1;
}
while (cntr!=0);
digitalWrite(ledPin, HIGH);
delay(900000);
ledState = LOW;
}
}
}
digitalWrite(ledPin, ledState);
lastButtonState = reading;
}
对不起,但是。。。你在标题中提到的中断在哪里 无论如何。。。如果要在开始15分钟等待前执行一次函数,可以将其放在指令
延迟(900000)之前代码>
但是,如果您想在这15分钟内完成某项工作,则不能使用延迟
功能,因为它是一个阻塞功能。你必须
等待较短的时间,然后执行某事或
使用millis()
功能,如“无延迟闪烁”示例所示
我建议你使用第二种解决方案,因为你有一个更精确的等待时间,这是正确的方法
或者,更好的是,最好的解决方案不是使用像您这样的代码,而是实现一个有限状态机,将经过的时间作为参数来更改状态
如果你只是期望所有的东西都在盘子里,我可以给你写解决方案1:而不是delay(900000)代码>写入
int time_cnt;
for(time_cnt=0; time_cnt<900; time_cnt++)
{
// Do something
delay(1000);
}
int time\u cnt;
对于(time_cnt=0;time_cnt我如何将按钮设置为保持,就像我希望按钮被按下5秒一样?它是这样的,LED闪烁5秒的时间与保持按钮的时间相同。抱歉,我不太理解。无论如何,对于您的问题,我建议使用状态机模板。然后使用毫秒触发状态转换s