回调不适用于ESP.deepsleep(time_interval_in_microseconds);

时间:2018-11-02 16:06:21

标签: arduino esp8266 arduino-esp8266

我需要帮助,我正在做一个项目,该项目将Pubsubclient与ep8266 12-e和wifimanager一起使用。我有一个回调函数,一旦我在pubsub客户端上使用了深度睡眠,便无法恢复任何内容,但与正常的延迟功能一起使用时效果很好。

void callback(char* topic,byte* payload,unsigned int length){
led_2();
char buff[22];
Serial.print("Message arrived in topic: ");
Serial.println(topic);
for (int i = 0; i < length; i++) {
Serial.print((char)payload[i]);
buff[i]=(char)payload[i];
}


if(strcmp(topic, "ios/interval") == 0)
{
    String test = String(buff);
    Serial.println(test);
    Serial.println("ok i am working");
    }
}

在我的void loop()函数中,我正在发布正常工作的数据,然后进行深度睡眠。但是在执行void循环操作时甚至深度睡眠后,回调中的数据都不会出现。

1 个答案:

答案 0 :(得分:1)

您还必须将REset连接到nodeMCU的D0引脚,然后此功能才能起作用。 D0是NodeMCU的硬件中断引脚,我们必须通过将该引脚拉至低电平来唤醒CPU。除此之外,您还可以使用void system_deep_sleep(uint32 time_in_us)函数进行深度睡眠,这些函数是ESP特定的API,用于深度睡眠