回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【花雕学编程】Arduino动手做(245)---DS3231 高精度时钟模块之读取日期、时间和温度 简单

头像 驴友花雕 2025.05.11 8 0

00.jpg
02.jpg
04-.jpg
04--.jpg
04---.jpg
06.jpg

库安装
为了在我们的项目中使用 DS3231 模块,我们将使用一个名为 uRTCLib 的特殊库。该库使从 RTC 读取时间数据变得超级简单。
尽管 uRTCLib 易于使用,但它也非常强大。与许多其他 RTC 库不同,它支持昼夜闹钟,并允许您控制 SQW(方波)输出。

要安装库
1. 首先打开您的 Arduino IDE 程序。然后点击 库管理器 左侧边栏上的图标。
2. 在搜索框中键入 “urtclib” 以筛选结果。
3. 查找 Naguissa 的 uRTCLib 库。
4. 单击 Install 按钮将其添加到您的 Arduino IDE。

 

07.jpg

  【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
 实验二百四十五:DS3231 高精度时钟模块  IIC/I2C接口 实时计时传感器
 项目之一:读取日期、时间和温度

实验开源代码

 

代码
/*
  【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百四十五:DS3231 高精度时钟模块  IIC/I2C接口 实时计时传感器
  项目之一:读取日期、时间和温度
*/

#include "Arduino.h"
#include "uRTCLib.h"

// 初始化 RTC 模块(I2C 地址 0x68)
uRTCLib rtc(0x68);

// 定义星期名称数组
char daysOfTheWeek[7][12] = {
    "Sunday", "Monday", "Tuesday", "Wednesday",
    "Thursday", "Friday", "Saturday"
};

void setup() {
    Serial.begin(9600);  // 初始化串口通讯

    URTCLIB_WIRE.begin();  // 初始化 I2C

    // 设置 RTC 时间(仅需要设置一次,设置后可注释掉)
    // 例如:2025年5月11日 12:56
    rtc.set(0, 00, 6, 7, 11, 5, 25);  
    // rtc.set(秒, 分钟, 小时, 星期, 日期, 月份, 年份)
    // 星期: 1=星期天, 7=星期六
}

void loop() {
    rtc.refresh();  // 更新 RTC 数据

    // 打印当前日期和时间
    Serial.print("Current Date & Time: ");
    Serial.print(rtc.year());
    Serial.print('/');
    Serial.print(rtc.month());
    Serial.print('/');
    Serial.print(rtc.day());
    Serial.print(" (");
    Serial.print(daysOfTheWeek[rtc.dayOfWeek() - 1]);  // 显示星期
    Serial.print(") ");
    Serial.print(rtc.hour());
    Serial.print(':');
    Serial.print(rtc.minute());
    Serial.print(':');
    Serial.println(rtc.second());

    // 打印温度数据
    Serial.print("Temperature: ");
    Serial.print(rtc.temp() / 100);  // 温度除以 100 获取实际值
    Serial.println("°C");

    Serial.println();
    delay(1000);  // 每秒更新一次
}

代码简单解读

这段代码使用 RTC(实时时钟)模块 获取 当前日期、时间和温度数据,并通过 串口输出,核心逻辑如下:

1. 初始化 RTC
✅ uRTCLib rtc(0x68); → 创建 RTC 对象,使用 I2C 地址 0x68 
✅ URTCLIB_WIRE.begin(); → 初始化 I2C 通信 
✅ rtc.set(0, 56, 12, 2, 14, 4, 25); → 设置 RTC 初始时间(只需运行一次)

2. 读取数据
✅ rtc.refresh(); → 从 RTC 读取最新数据 
✅ rtc.year(), rtc.month(), rtc.day() → 获取年、月、日 
✅ rtc.hour(), rtc.minute(), rtc.second() → 获取小时、分钟、秒 
✅ daysOfTheWeek[rtc.dayOfWeek() - 1] → 从数组获取星期名称

3. 打印时间与温度
✅ Serial.print() → 格式化打印日期、时间和星期 
✅ Serial.print(rtc.temp() / 100); Serial.println("°C"); → 转换并输出温度

4. 采集间隔
✅ delay(1000); → 每秒更新一次数据

这段代码让 RTC 模块不断采集时间和温度,并在串口监视器显示。

 

实验串口返回情况

 

08.jpg

实验场景图 

 

08-1.jpg

评论

user-avatar
icon 他的勋章
    展开更多