37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验八十四:DS1307时钟模块 Tiny RTC I2C模块 24C32存储器 时钟(带电池)
DS1307时钟模块的实验环境
1、DS1307时钟模块实验所需硬件清单
DS1307时钟模块X1
TM1637四位数码管X1
Arduino Uno开发板 X1
杜邦线 若干(备了9条)
IIC/I2C 1602 LCD液晶屏模块X1
LED发光二极管(蓝、绿色)X2
Proto Shield原型扩展板(带mini面包板)X1
2、传感器模块实验所需软件平台
代码编程 Arduino IDE (版本1.8.19)
仿真编程 Linkboy (版本V4.6.3)
图形编程 Mind+ (版本 V1.7.0 RC2.0)
以及编玩边学(线上平台https://ide.codepku.com/?type=Arduino)
3、下载安装DS1307驱动库
打开https://github.com/,搜索“DS1307”
可选择的有不少,有空可以都试试看
4、实验接线示意图
6.8.3. DS1307时钟模块的几个实验
程序一:串口输出日期与时间
(1)Arduino参考开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序一:串口输出日期与时间
*/
#include <DFRobot_DS1307.h>
//构造函数
DFRobot_DS1307 DS1307;
void setup() {
Serial.begin(115200);
// 初始化传感器
while ( !(DS1307.begin()) ) {
Serial.println("与设备通讯失败,请检查连接");
delay(3000);
}
Serial.println("好了,可以开始!");
DS1307.setTypeTime(DS1307.eYR, 2000);
Serial.print("获取类型时间: ");
Serial.println(DS1307.getTypeTime(DS1307.eYR));
//停止 RTC 定时器功能
DS1307.stop();
//手动设置时间参数
uint16_t setTimeBuff[7] = {
5, 50, 12, 7, 10, 4, 2022};
DS1307.setTime(setTimeBuff);
//启动RTC计时功能
DS1307.start();
//控制 SQW/OUT 引脚的操作
DS1307.setSqwPinMode(DS1307.eSquareWave_1Hz);
}
void loop() {
//获取 SQW/OUT 引脚的当前输出模式
if (DS1307.eSquareWave_1Hz == DS1307.getSqwPinMode()) {
Serial.print("SQW/OUT 引脚:1Hz | ");
}
uint16_t getTimeBuff[7] = {
0};
DS1307.getTime(getTimeBuff);
char outputarr[128];
sprintf(outputarr, "日期与时间: %d/%d/%d-%d %d:%d:%d\r\n",
getTimeBuff[6],
getTimeBuff[5],
getTimeBuff[4],
getTimeBuff[3],
getTimeBuff[2],
getTimeBuff[1],
getTimeBuff[0]
);
Serial.print(outputarr);
delay(1000);//延时1000毫秒
}
(2)实验串口返回情况
(3)实验场景图
程序二:DS1307串口输出日期和时间
(1)实验开源仿真编程(Linkboy V4.63)
(2)实验串口返回情况
程序三:DS1307串口输出日期和时间之二
(1)实验开源图形编程(Mind+、编玩边学)
(2)实验串口返回情况