【问题标题】:How to use time library in Arduino?如何在 Arduino 中使用时间库?
【发布时间】:2020-01-20 10:08:11
【问题描述】:

我正在尝试将这个简单的程序上传到我的 Arduino 以获取时钟:

#include <Time.h>

time_t nowTime;

void setup() {
    nowTime = now();
}

但是编译失败:

exit status 1
'now' was not declared in this scope

为什么now() 没有在这个范围内声明? Time.h 文件包括在内。那么为什么不声明now() 呢?我该如何解决这个问题?

【问题讨论】:

  • 没有理由对这个问题投反对票。它是完整的。并且由于 #include 有效,因此认为 now() 函数应该存在是合理的。
  • 您在哪里看到Arduino API 中的now() 函数?注意:有一个专门的 Arduino 问题站点:arduino.stackexchange.com
  • 您使用的是 C 还是 C++?请修正问题,以便仅标记您使用的语言。
  • Time.h 记录在哪里?
  • 您可能正在寻找millismicros

标签: c++ c arduino


【解决方案1】:

编译失败是因为编译器找到的 Time.h 文件与 Paul Stoffregen (https://github.com/PaulStoffregen/Time) 等时间库无关。

我尝试了您的 Sketch,为 Arduino Uno 编译,并看到您看到的相同错误:Time.h 已解析(该文件存在于某处),但 now() 未由该 Time.h 定义

在我的 Windows PC 上搜索了一段时间后,我终于找到了我认为的 #include 包含在我的安装中的文件:C:\Users\Brad\AppData\Local\Arduino15\packages\arduino\hardware\avr\ 1.8.2\firmwares\wifishield\wifiHD\src\time.h 或者 C:\Users\Brad\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino5\ avr\include\time.h

这些文件都没有定义 now() 函数。

如果您想使用 Paul Stoffregen 的时间库,请从 https://github.com/PaulStoffregen/Time 下载并安装它。如果您希望使用 Michael Margolis 的 Time 库,您可以在 Arduino IDE 中的 Tools / Manage Libraries... 下找到并安装它,然后在搜索词中输入“Time”(不带引号)。

正如其他人所指出的,Arduino 环境并不总是知道当前的日期和时间。函数 mills() 和 micros() 分别返回自 Arduino 启动以来的毫秒数或微秒数。只是为了看时间的流逝,大多数人使用millis() 或micros() 而不是更复杂的库。

【讨论】:

    猜你喜欢
    • 2021-09-15
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多