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


在这里插入图片描述

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。

** 【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百四十五:DS3231 高精度时钟模块 IIC/I2C接口 实时计时传感器**

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
实验模块接线示意图

在这里插入图片描述

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

要安装库

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

在这里插入图片描述

【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 模块不断采集时间和温度,并在串口监视器显示。

实验串口返回情况

在这里插入图片描述

实验场景图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值