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 等)接口。建议您仔细阅读此库的文档以及随此库附带的示例。

更新于:2021 年 8 月 2 日

8K+ 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告