处理读取失败
检测 NaN 并重试,避免程序崩溃
处理读取失败 是 CoddyKit 上的免费 Arduino & IoT Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Arduino & IoT Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Arduino & IoT Academy 课程共包含 4 节课。
读取可能失败
即使是性能良好的传感器,有时也会返回无效结果。松动的导线、过快的轮询或噪声都可能导致读取失败,因此请做好应对准备。⚠️
认识 NaN
读取失败时,这个库会返回 NaN,意思是“不是一个数”。这是传感器表示“我没有获取到数值”的方式。
NaN 为什么棘手
NaN 永远不等于任何值,甚至不等于它自己。因此,您不能简单地将它与普通数字比较来捕获错误。
使用 isnan 检测
使用内置的 isnan() 函数检查读数。当数值是失败读取产生的 NaN 时,它会返回 true。
if (isnan(t)) {
}使用前先检查
始终要在打印或处理读数之前进行检查。跳过这一步,错误数据就可能悄悄进入您的逻辑。
检查两个数值
请同时检查温度和湿度,因为其中任意一个都可能读取失败。如果一个是 NaN,就应将整个读数视为无效并跳过。
if (isnan(t) || isnan(h)) {
return;
}打印警告
读取失败时,请打印一条清晰的消息,而不是打印数值。未来的您会感谢现在留下的这条有用提示。
Serial.println("Failed to read DHT!");重试,不要崩溃
偶尔失败一次很正常,因此不要停止程序。只需在下一次循环中重试,通常就能成功读取。
保留上一次有效值
为了让显示保持稳定,请保存上一次有效的读数,并在读取失败时重复使用它。屏幕就不会显示难看的空白。
放慢速度以解决失败
如果失败次数不断增加,可能是读取速度过快,或者接线松动。延长延迟时间并确保连接牢固,通常就能解决问题。
从设计上保证稳定
优雅地处理错误,是玩具与真正设备之间的区别。现在,即使偶尔出现小故障,您的传感器也能从容应对。
快速检查
DHT 读取失败时,您应如何在代码中检测这种情况?
回顾
您了解到读取失败会返回 NaN,使用 isnan 捕获了这些情况,用警告代替崩溃,并让设备保持稳定。🎉
用 AI 导师学习 C++ — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 30
- 课程
- 120
常见问题解答
「处理读取失败」课时是免费的吗?
是的 — 「处理读取失败」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Arduino & IoT Academy 课程的其余内容,请升级到 CoddyKit PRO。 Arduino & IoT Academy 课程共包含 4 节课。
「处理读取失败」这节课中我会学到什么?
检测 NaN 并重试,避免程序崩溃 你通过在浏览器中直接运行的动手代码来练习 Arduino & IoT Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Arduino & IoT Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Arduino & IoT Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「处理读取失败」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Arduino & IoT Academy 课中编写并运行代码吗?
能。每节 Arduino & IoT Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。