【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百四十五:DS3231 高精度时钟模块 IIC/I2C接口 实时计时传感器
项目之四:计算 从 1970 年 1 月 1 日午夜以来的时间(Unix 时间戳)
实验开源代码
/*
【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百四十五:DS3231 高精度时钟模块 IIC/I2C接口 实时计时传感器
项目之四:计算 从 1970 年 1 月 1 日午夜以来的时间(Unix 时间戳)
*/
#include <Wire.h>
#include <DS3231.h>
RTClib myRTC;
void setup () {
Serial.begin(57600);
Wire.begin();
delay(500);
Serial.println("Nano Ready!");
}
void loop () {
delay(2000);
DateTime now = myRTC.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
Serial.print(" 自1970年1月1日午夜以来 = ");
Serial.print(now.unixtime());
Serial.print("秒 = ");
Serial.print(now.unixtime() / 86400L);
Serial.println(" 天");
}
代码解读
这段代码使用 DS3231 实时时钟(RTC)模块 获取 当前时间和日期,并计算 从 1970 年 1 月 1 日午夜以来的时间(Unix 时间戳),核心逻辑如下:
1. 引入库
✅ #include
2. 初始化
✅ Serial.begin(57600); → 设置串口通信速率为 57600 ✅ Wire.begin(); → 初始化 I2C 通信 ✅ Serial.println("Nano Ready!"); → 打印启动消息 ✅ delay(500); → 等待 500 毫秒,确保 RTC 启动
3. 读取并显示时间
✅ DateTime now = myRTC.now(); → 获取当前时间 ✅ Serial.print(now.year(), DEC); → 显示年份 ✅ Serial.print(now.month(), DEC); → 显示月份 ✅ Serial.print(now.day(), DEC); → 显示日期 ✅ Serial.print(now.hour(), DEC); → 显示小时 ✅ Serial.print(now.minute(), DEC); → 显示分钟 ✅ Serial.print(now.second(), DEC); → 显示秒
4. 计算 Unix 时间
✅ Serial.print(now.unixtime()); → 获取 Unix 时间戳(秒数) ✅ Serial.print(now.unixtime() / 86400L); → 计算从 1970 年 1 月 1 日以来的天数
5. 采集间隔
✅ delay(2000); → 每 2 秒更新一次数据
这段代码让 DS3231 RTC 模块不断读取时间,并计算 Unix 时间戳。
实验串口返回情况


评论