37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。
** 【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百四十五:DS3231 高精度时钟模块 IIC/I2C接口 实时计时传感器**

实验模块接线示意图
安装DS3231.h 库(https://github.com/NorthernWidget/DS3231/tree/master)
【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百四十五:DS3231 高精度时钟模块 IIC/I2C接口 实时计时传感器
项目之三:使用 DS3231.h 库的应用案例
实验开源代码
/*
【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百四十五:DS3231 高精度时钟模块 IIC/I2C接口 实时计时传感器
项目之三:使用 DS3231.h 库的应用案例
*/
#include <Wire.h>
#include <DS3231.h> // 使用 DS3231 库
// 创建 DS3231 RTC 对象
DS3231 rtc;
void setup() {
Serial.begin(115200); // 初始化串口通信
Wire.begin(); // 启动 I2C
}
void loop() {
rtc.getTemperature(); // 确保数据更新
// 读取时间(确保传入参数)
bool h12, PM_time;
Serial.print("时间: ");
Serial.print(rtc.getHour(h12, PM_time));
Serial.print(":");
Serial.print(rtc.getMinute());
Serial.print(":");
Serial.println(rtc.getSecond());
// 读取日期
bool centuryFlag;
Serial.print("日期: ");
Serial.print(rtc.getYear());
Serial.print("/");
Serial.print(rtc.getMonth(centuryFlag));
Serial.print("/");
Serial.println(rtc.getDate());
// 获取 DS3231 内部温度
Serial.print("温度: ");
Serial.print(rtc.getTemperature());
Serial.println("°C");
Serial.println(); // 美化输出
delay(1000); // 每秒刷新
}
简单解读
这段代码使用 DS3231 实时时钟(RTC)模块 通过 I2C 通信 获取 当前时间、日期和温度,核心逻辑如下:
-
初始化 RTC
✅ DS3231 rtc; → 创建 DS3231 实例(I2C 默认地址)
✅ Wire.begin(); → 启动 I2C 通信 -
读取时间
✅ rtc.getHour(h12, PM_time); → 获取小时(24小时制)
✅ rtc.getMinute(); → 获取分钟
✅ rtc.getSecond(); → 获取秒 -
读取日期
✅ rtc.getYear(); → 获取年份
✅ rtc.getMonth(centuryFlag); → 获取月份(需要参数)
✅ rtc.getDate(); → 获取当天日期 -
读取温度
✅ rtc.getTemperature(); → 获取 DS3231 内置温度传感器的值 -
串口输出
✅ 格式化打印时间、日期、星期和温度,确保显示清晰 -
采集间隔
✅ delay(1000); → 每秒更新一次数据
这段代码让 DS3231 RTC 模块不断读取当前时间、日期和温度,并在串口显示。
实验串口返回情况