Arduino 时间库简介

arduinosoftware & codinghardware更新于 2026/1/11 15:52:17

时间库为您提供 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 示例中给出了说明。

通过上述任何一种方式设置时间后,Time 库都会使用内部的 millis() 函数来维护时间。

示例

例如,在下面的代码中,我在设置中设置了一个任意时间值,并以 1 秒的间隔循环打印该时间值。

#include <TimeLib.h>
void setup() {
   // 在此处放置设置代码,运行一次:
   Serial.begin(9600);
   Serial.println();
   setTime(3, 10, 30, 24, 5, 2021);
}

void loop() {
   // 在此处放置主代码,重复运行:
   digitalClockDisplay();
   delay(1000);
}

void digitalClockDisplay(){
   // 数字时钟显示时间
   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) {
   // 用于数字时钟显示的实用函数:打印前导冒号和前导 0
   Serial.print(":");
   if(digits < 10)
      Serial.print('0');
      Serial.print(digits);
}

输出

串行监视器输出为 −

如您所见,时间每秒都在增加。因此,一旦设置了时间,该库就可以维护它,而且最棒的是,它可以与各种时间源(例如 GPS、RTC、NTP 等)交互。建议您阅读该库的文档以及库附带的示例。


相关文章