Arduino 时间库简介
时间库为您提供了 Arduino 上的时间保持功能。该库的最新版本已在 此处 记录。
要安装它,请在库管理器中搜索 Time 并安装 Michael Margolis 的库。您需要滚动一下才能找到此库。
安装库后,如果转到**文件 → 示例 → 时间**,您将能够看到将此库与各种来源集成的几个示例:GPS、NTP、RTC 等。
基本思想是您可以使用以下函数设置时间:
setTime(hours, minutes, seconds, days, months, years);
或者,
setTime(t);
其中**t** 是特殊**time_t** 变量类型,它是自 1970 年以来经过的秒数。您可能也将其称为纪元时间。
或者,您可以设置同步源**setSyncProvider(getTimeFunction)** 和同步间隔**setSyncInterval(seconds)**。这样,如果您有一个具有**getTime()** 函数的源,则可以将其用作同步源并每隔 N 秒(在**setSyncInterval** 参数中指定)更新一次时间。TimeRTC 示例中给出了一个说明。
通过以上任何一种方式设置时间后,时间库使用内部**millis()** 函数来维护时间。
示例
例如,在以下代码中,我在 setup 中设置了一个任意的时间值,并且我每隔 1 秒在循环中打印一次时间值。
#include <TimeLib.h> void setup() { // put your setup code here, to run once: Serial.begin(9600); Serial.println(); setTime(3, 10, 30, 24, 5, 2021); } void loop() { // put your main code here, to run repeatedly: digitalClockDisplay(); delay(1000); } void digitalClockDisplay(){ // digital clock display of the time Serial.print(hour()); printDigits(minute()); printDigits(second()); Serial.print(" "); Serial.print(day()); Serial.print(" "); Serial.print(month()); Serial.print(" "); Serial.print(year()); Serial.println(); } void printDigits(int digits) { // utility function for digital clock display: prints preceding colon and leading 0 Serial.print(":"); if(digits < 10) Serial.print('0'); Serial.print(digits); }
输出
串口监视器输出为:
如您所见,时间每秒递增。因此,一旦设置了时间,此库就可以维护它,最好的部分是它可以与各种时间源(如 GPS、RTC、NTP 等)接口。建议您仔细阅读此库的文档以及随此库附带的示例。
广告