我正在尝试将这个简单的程序上传到我的 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() 而不是更复杂的库。