如何在Arduino中使用时间库?

4
我正在尝试将这个获取时钟时间的简单程序上传到我的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()函数?我该如何解决这个问题?

1
没有理由对这个问题进行投票。它是完整的。而且由于#include起作用,可以合理地认为现在()函数应该存在。 - Saqib Ali
你在Arduino API中看到now()函数在哪里?注意:有一个专门的网站用于Arduino问题:https://arduino.stackexchange.com/ - rustyx
你是在使用C还是C++?请修正问题,只标记你正在使用的语言。 - ikegami
1
Time.h 的文档在哪里可以找到? - ikegami
1
你可能正在寻找 millismicros - Austin Brunkhorst
显示剩余5条评论
1个回答

5
编译失败是因为编译器找到的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的Time库,请从https://github.com/PaulStoffregen/Time下载并安装它。如果您想使用Michael Margolis的Time库,您可以在Arduino IDE中找到并安装它,在工具/管理库下输入“Time”(不带引号)进行搜索。
正如其他人指出的那样,Arduino环境并不总是知道当前日期和时间。函数mills()和micros()分别返回自Arduino启动以来的毫秒数或微秒数。对于仅查看时间流逝的情况,大多数人使用millis()或micros()而不是更复杂的库。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接