|
[项目] 【花雕学编程】Arduino动手做(245)--DS3231模块11个小实验 |
【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验二百四十五:DS3231 高精度时钟模块 IIC/I2C接口 实时计时传感器 项目之四:计算 从 1970 年 1 月 1 日午夜以来的时间(Unix 时间戳) 实验开源代码
|
代码解读 这段代码使用 DS3231 实时时钟(RTC)模块 获取 当前时间和日期,并计算 从 1970 年 1 月 1 日午夜以来的时间(Unix 时间戳),核心逻辑如下: 1. 引入库 ✅ #include <Wire.h> → 用于 I2C 通信 ✅ #include <DS3231.h> → 用于 DS3231 RTC 控制 ✅ RTClib myRTC; → 创建 RTC 对象,用于管理时间数据 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 时间戳。 |
【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验二百四十五:DS3231 高精度时钟模块 IIC/I2C接口 实时计时传感器 项目之五:生成 9 单位的矩形波 实验开源代码
|
代码解读 这段代码使用 DS3231 实时时钟(RTC)模块 通过 I2C 通信 获取 当前秒数,并在串口绘图器生成矩形波,核心逻辑如下: 1. 初始化 RTC ✅ DS3231 rtc; → 创建 DS3231 实例(使用默认 I2C 地址) ✅ Wire.begin(); → 启动 I2C 通信 ✅ Serial.begin(9600); → 初始化串口通信 2. 读取秒数据 ✅ rtc.getSecond(); → 获取当前秒数 ✅ second % 2 == 0 ? 9 : 0; → 偶数秒输出 9,奇数秒输出 0,形成矩形波 3. 发送数据 ✅ Serial.println(signal); → 将数据发送至串口绘图器,用于实时显示波形 4. 采集间隔 ✅ delay(100); → 每 100 毫秒更新一次数据,确保波形稳定 这段代码让 DS3231 模块精准控制矩形波,并在串口绘图器显示。 |
【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验二百四十五:DS3231 高精度时钟模块 IIC/I2C接口 实时计时传感器 项目之六:通过串口监视器输出报警状态 实验开源代码
|
代码解读 这段代码使用 DS3231 实时时钟(RTC)模块 管理 报警系统,并通过 串口监视器输出报警状态,核心逻辑如下: 1. 初始化 RTC ✅ DS3231 myRTC; → 创建 DS3231 RTC 实例 ✅ Wire.begin(); → 启动 I2C 通信 ✅ Serial.begin(57600); → 设置串口波特率为 57600 2. 设置报警 ✅ turnOffAlarm(1); → 关闭 Alarm1 ✅ setA1Time(0, 0, 0, 0, 0b01111110, false, false, false); → 设置 Alarm1,每分钟触发 ✅ turnOffAlarm(2); → 关闭 Alarm2 ✅ setA2Time(0, 0, 0, 0b01111110, false, false, false); → 设置 Alarm2,每分钟触发 3. 读取报警状态 ✅ getA1Time() → 获取 Alarm1 的时间数据 ✅ getA2Time() → 获取 Alarm2 的时间数据 ✅ Serial.println(AlarmBits, BIN); → 以二进制格式显示报警状态 4. 采集间隔 ✅ delay(5000); → 每 5 秒更新一次数据 这段代码让 DS3231 模块管理报警,并在串口监视器查看报警状态。 |
【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验二百四十五:DS3231 高精度时钟模块 IIC/I2C接口 实时计时传感器 项目之七:通过 Unix 时间戳设置 DS3231 时间 实验开源代码
|
代码简单解读 这段代码使用 DS3231 实时时钟(RTC)模块 通过 I2C 通信 设置并读取时间,核心逻辑如下: 1. 初始化 RTC ✅ DS3231 Clock; → 创建 DS3231 RTC 对象 ✅ Wire.begin(); → 启动 I2C 通信 ✅ Serial.begin(115200); → 初始化串口通信,波特率 115200 2. 设置时间 ✅ Clock.setEpoch(tstmp, false); → 使用 Unix 时间戳设置 DS3231 时间 ✅ Clock.setClockMode(false); → 设定为 24 小时制 3. 读取并打印时间 ✅ Clock.getYear(), Clock.getMonth(century), Clock.getDate(); → 获取年月日 ✅ Clock.getHour(h12Flag, pmFlag), Clock.getMinute(), Clock.getSecond(); → 获取小时、分钟、秒 ✅ Clock.getDoW(); → 获取星期 4. 格式化时间 ✅ showTimeFormated(tstmp); → 格式化时间并打印 5. 采集间隔 ✅ loop() 为空 → 代码只在 setup() 运行一次,不循环执行 这段代码让 DS3231 模块精准管理时间,并格式化输出到串口。 |
【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验二百四十五:DS3231 高精度时钟模块 IIC/I2C接口 实时计时传感器 项目之八:通过 I2C 通信 接收用户输入的时间数据并更新时钟 实验开源代码
|
代码简单解读 这段代码使用 DS3231 RTC(实时时钟)模块 通过 I2C 通信 接收用户输入的时间数据,并更新 DS3231 的时钟,核心逻辑如下: 1. 初始化 RTC ✅ DS3231 myRTC; → 创建 DS3231 RTC 对象 ✅ Wire.begin(); → 启动 I2C 通信 ✅ Serial.begin(57600); → 初始化串口,波特率 57600 2. 解释时间格式 ✅ Serial.println() → 向用户展示输入格式(YYMMDDwhhmmssx) ✅ 示例输入 → "2004095090242x" 代表 2020 年 4 月 9 日星期四 09:02:42 3. 监听串口输入并解析时间 ✅ inputDateFromSerial(); → 读取串口输入数据并转换为 RTC 兼容格式 ✅ 解析年、月、日、星期、时、分、秒 ✅ myRTC.setClockMode(false); → 设置为 24 小时制 ✅ myRTC.setYear(year); → 设置年份 ✅ myRTC.setMonth(month); → 设置月份 ✅ myRTC.setDate(date); → 设置日期 ✅ myRTC.setDoW(dow); → 设置星期 ✅ myRTC.setHour(hour); → 设置小时 ✅ myRTC.setMinute(minute); → 设置分钟 ✅ myRTC.setSecond(second); → 设置秒 4. 每 5 秒回显当前时间 ✅ 每秒打印 DS3231 当前时间,以确保时间正确 5. 采集间隔 ✅ delay(1000); → 每秒监听串口输入,等待新时间数据 这段代码让 用户通过串口输入时间,并更新 DS3231 的时钟。 |
【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验二百四十五:DS3231 高精度时钟模块 IIC/I2C接口 实时计时传感器 项目之九:读取当前时间、温度和闹钟状态 实验开源代码
|
代码简单解读 这段代码使用 DS3231 实时时钟(RTC)模块 通过 I2C 通信 读取当前时间、温度和闹钟状态,并在 串口监视器 输出,核心逻辑如下: 1. 初始化 RTC ✅ DS3231 myRTC; → 创建 DS3231 实例 ✅ Wire.begin(); → 启动 I2C 通信 ✅ Serial.begin(57600); → 初始化串口通信,波特率 57600 2. 读取时间数据 ✅ myRTC.getYear(); → 获取年份 ✅ myRTC.getMonth(); → 获取月份 ✅ myRTC.getDate(); → 获取日期 ✅ myRTC.getDoW(); → 获取星期 ✅ myRTC.getHour(h12Flag, pmFlag); → 获取小时(支持 AM/PM 显示) ✅ myRTC.getMinute(); → 获取分钟 ✅ myRTC.getSecond(); → 获取秒数 3. 读取温度数据 ✅ myRTC.getTemperature(); → 获取 DS3231 内部温度传感器数据 4. 监测 RTC 运行状态 ✅ myRTC.oscillatorCheck(); → 检查 RTC 振荡器是否正常工作 ✅ myRTC.checkIfAlarm(1); → 检查 Alarm 1 是否触发 ✅ myRTC.checkIfAlarm(2); → 检查 Alarm 2 是否触发 5. 读取闹钟设定 ✅ myRTC.getA1Time(); → 获取 Alarm 1 的设定时间 ✅ myRTC.getA2Time(); → 获取 Alarm 2 的设定时间 ✅ myRTC.checkAlarmEnabled(1); → 检查 Alarm 1 是否启用 ✅ myRTC.checkAlarmEnabled(2); → 检查 Alarm 2 是否启用 6. 采集间隔 ✅ delay(1000); → 每秒更新一次数据 这段代码让 DS3231 RTC 模块不断读取时间、日期、温度和闹钟状态,并在串口监视器显示。 |
【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验二百四十五:DS3231 高精度时钟模块 IIC/I2C接口 实时计时传感器 项目之十:将时间居中显示在 OLED 屏幕上 实验开源代码
|
© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed