如何使用Arduino中的时间库?

Saq*_*Ali 4 c c++ arduino

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

#include <Time.h>

time_t nowTime;

void setup() {
    nowTime = now();
}
Run Code Online (Sandbox Code Playgroud)

但是,它无法编译:

exit status 1
'now' was not declared in this scope
Run Code Online (Sandbox Code Playgroud)

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

小智 5

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

我尝试了为 Arduino Uno 编译的 Sketch,并看到了与您看到的相同的错误: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 \时间.h

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

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

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