wifiduino中回调函数使用for循环的问题-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1547|回复: 2

[求助] wifiduino中回调函数使用for循环的问题

[复制链接]
发表于 2021-1-5 16:14 | 显示全部楼层 |阅读模式
求助:在回调函数中使用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循环呢?

发表于 2021-1-5 20:41 | 显示全部楼层
回调函数中不能有长耗时的操作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 13:38 , Processed in 0.089809 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表