esp8266nodemcu重启问题-Arduino中文社区 - Powered by Discuz! Archiver

HAIFAN 发表于 2022-3-5 21:55

esp8266nodemcu重启问题

void zdbt_callback(const String & state)
{
BLINKER_LOG("get button state: ", state);
if (state == BLINKER_CMD_ON)
{
    BLINKER_LOG("Toggle on!");
//    ZDbt.icon("fa-duotone fa-toggle-on");
    ZDbt.color("#FF0000");
    ZDbt.text("自动模式开");
    ZDbt.print("on");
    ZD=1;
    BLINKER_LOG("执行到按键回调开");
}
else if (state == BLINKER_CMD_OFF)
{
    BLINKER_LOG("Toggle off!");
//    ZDbt.icon("fa-duotone fa-toggle-off");
    ZDbt.color("#FF0000");
    ZDbt.text("自动模式关");
    ZDbt.print("off");
    ZD=0;
    BLINKER_LOG("执行到按键回调关");
}
else
{
    BLINKER_LOG("Get user setting: ", state);
    ZDbt.icon("fa-duotone fa-toggle-off");
    ZDbt.color("#FFFFFF");
    ZDbt.text("?");
    ZDbt.print();
}
}


/*判断ZDMS按键是否被打开*/
void zdms()
{
    if(ZD==0)
    {
      BLINKER_LOG("自动模式关闭");
      ZDbt.text("自动模式关闭");
      ZDbt.print("off");
}
    else if(ZD==1)
    {

      BLINKER_LOG("自动模式打开");
      ZDbt.text("自动模式打开");
//      ZDbt.icon("fa-duotone fa-toggle-on");
      ZDbt.color("#FF0000");
      ZDbt.print("on");
      zidong();

}
}
void zidong()
{
if(temp_read>u)
{
    ac.on();//打开电源
    IRSEND
    ac.setMode(kGreeCool);//打开制冷模式
    IRSEND
    BLINKER_LOG("高于最高温度,空调开!");
    BLINKER_LOG("Toggle on!");
//    Power.icon("fa-duotone fa-toggle-on");
    Power.color("#FF0000");
    Power.text("电源开");
    Power.print("on");                      //反馈回按键状态是开
}
if(temp_read<l)
{
   BLINKER_LOG("低于最低湿度,空调关!");
    BLINKER_LOG("Toggle off!");
    ac.off();
    IRSEND
//    Power.icon("fa-duotone fa-toggle-off");
    Power.color("#FF0000");
    Power.text("电源关");
    Power.print("off");
}
}
请指教:每次打开“zdbt”按钮,程序执行到ac.函数(空调红外控制函数)的时候设备就会重启,试过把ac.的相关函数删掉就不会重启,zdms函数每十秒执行一次:
Ticker flipper;
flipper.attach(10, zdms);
ps:ac.函数在其他回调函数中可以正常使用

月光啪啪 发表于 2022-3-5 22:17

是不是继电器开关220V交流电有干扰。单独用电池给8266供电,或者接个二级继电器试试

奈何col 发表于 2022-3-5 22:33

不知道你这ac是啥,如果其中有耗时操作,可能会造成重启。回调函数不能有耗时操作

HAIFAN 发表于 2022-3-5 23:10

奈何col 发表于 2022-3-5 22:33
不知道你这ac是啥,如果其中有耗时操作,可能会造成重启。回调函数不能有耗时操作 ...

就是发射红外的函数,IRremote库里的,如果是有耗时操作的话,在其他回调函数中使用也会出问题吧,可是他在其他地方没出现过问题,在zidong()里调用百分百出问题:'(

HAIFAN 发表于 2022-3-5 23:11

月光啪啪 发表于 2022-3-5 22:17
是不是继电器开关220V交流电有干扰。单独用电池给8266供电,或者接个二级继电器试试 ...

没有继电器,只是单纯的红外发射而已
页: [1]
查看完整版本: esp8266nodemcu重启问题