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.函数在其他回调函数中可以正常使用
是不是继电器开关220V交流电有干扰。单独用电池给8266供电,或者接个二级继电器试试 不知道你这ac是啥,如果其中有耗时操作,可能会造成重启。回调函数不能有耗时操作 奈何col 发表于 2022-3-5 22:33
不知道你这ac是啥,如果其中有耗时操作,可能会造成重启。回调函数不能有耗时操作 ...
就是发射红外的函数,IRremote库里的,如果是有耗时操作的话,在其他回调函数中使用也会出问题吧,可是他在其他地方没出现过问题,在zidong()里调用百分百出问题:'( 月光啪啪 发表于 2022-3-5 22:17
是不是继电器开关220V交流电有干扰。单独用电池给8266供电,或者接个二级继电器试试 ...
没有继电器,只是单纯的红外发射而已
页:
[1]