Arduino & IoT Academy · 课时

处理读取失败

检测 NaN 并重试,避免程序崩溃

第 4 / 4 课13 个步骤

处理读取失败 是 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 连接 DHT11/DHT22
  2. 安装 DHT 库
  3. 读取温度与湿度
  4. 处理读取失败
← 返回 Arduino & IoT Academy