Arduino 时间库简介
arduinosoftware & codinghardware更新于 2026/1/11 15:52:17
时间库为您提供 Arduino 上的计时功能。该库的最新版本文档位于此处。
要安装它,请在库管理器中搜索"Time",然后安装由 Michael Margolis 编写的库。您需要滚动一点才能找到此库。
.png)
安装库后,如果您转到文件 → 示例 →时间,您将能够看到几个将此库与各种来源集成的示例:GPS、NTP、RTC 等。
.png)
基本思路是,您可以使用函数设置时间 −
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);
}
输出
串行监视器输出为 −
.png)
如您所见,时间每秒都在增加。因此,一旦设置了时间,该库就可以维护它,而且最棒的是,它可以与各种时间源(例如 GPS、RTC、NTP 等)交互。建议您阅读该库的文档以及库附带的示例。

