|
求助:在回调函数中使用for循环的问题。
源文件:
#define BLINKER_WIFI
#include <Blinker.h>
char auth[] = "b83b949d92ff";
char ssid[] = "mima88888888";
char pswd[] = "88888888";
BlinkerButton Button2("btn-paishui");
void button2_callback(const String & state)
{
digitalWrite(D13, HIGH);
for(int i = 0;i <= 20;i++) {
Blinker.delay(3000);
if(digitalRead(D6) == HIGH){
break;
}
}
digitalWrite(D13, LOW);
}
void setup()
{
// 初始化串口
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
BLINKER_DEBUG.debugAll();
pinMode(D6, INPUT);
pinMode(D13, OUTPUT);
// 初始化blinker
Blinker.begin(auth, ssid, pswd);
Button2.attach(button2_callback);
}
void loop() {
Blinker.run();
}
这个程序的作用是,点击button2按钮,D13针脚先HIGH再low,其中每3秒检测一次D6的电平,若为高电平,则D13为LOW,或者检测了60秒,也设置为LOW。在button2_callback这个回调函数中,我使用了for循环实现。但是问题来了:
问题一、
有教程指出,回调函数内不应该有阻塞类的函数,如wait、while等,所以我觉得在回调函数中使用for循环不合理,怎么优化呢?
问题二、
在回调函数中使用for循环,如何在其他自定义函数中终止这个for循环呢?
|
|