乐鑫技术交流
直播中

张涛

8年用户 1407经验值
私信 关注
[问答]

NodeMCU wdt重置是什么原因造成的?如何解决?

我试着看看雷达开关传感器是高还是低。
这是代码:
int mwsensor = 7;
void setup() {
  // 将你的设置代码放在这里,运行一次:
  Serial.begin(115200);
  pinMode(mwsensor,输入);
}
void loop() {
  // 将你的主要代码放在这里,重复运行:
  digitalRead(mwsensor);
  Serial.println("hoi");
  延迟(1000);

将代码上传到 NodeMCU,这在串行监视器中返回:
ets Jan 8 2013,rst cause:4, boot mode:(3,6)
wdt reset
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v8b899c12
~ld
我不知道出了什么问题。通常我可以毫无问题地上传代码。
你能给我一个建议吗?

回帖(1)

李燕

2023-9-19 15:04:49
NodeMCU wdt重置是由于程序出现死循环或者异常情况导致的。在你的代码中,可能是由于延迟(1000)导致的,因为当延迟时间过长时,程序会被挂起而没有机会处理其他任务,从而引发wdt重置。尝试缩短延迟时间或使用非阻塞延迟(例如millis()函数)。

另外,建议你在digitalRead之后检查传感器值是否为有效值,并在串行监视器中输出调试信息,以便诊断问题。例如,你可以添加以下代码:

int sensorValue = digitalRead(mwsensor);
if (sensorValue == HIGH || sensorValue == LOW) {
  Serial.print("Sensor value: ");
  Serial.println(sensorValue);
} else {
  Serial.println("Invalid sensor value");
}

这样可以帮助你确定传感器是否响应,并排除一些可能的故障。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分