这个东西其实是可以的,就是没什么技术支持,有很多细节会有坑,我搞了十几天(期间还花了一周来学习焊接)才完全成功的,期间我很恼火,觉得就是买了个垃圾,甚至想扔掉这个2块钱的东西。于是我又买了一个,结果两个都是一样的,这时我才静下心来看看到底是怎么一回事。现在把经验细节分享给后来的新手,高手可以略过。

就今天写这篇博文的时候做的,童叟无欺哈

我在淘宝和拼多多各买了一个这样的,名叫Tiny RTC,2元

反面是这样的,需要手工焊接,不太友好

焊接好之后是这样的,我努力学了很多天,总算是掌握了一项新技能。

下面开始分享我的经验,有以下几个点值得注意:

1、需要手工焊接,这点无法回避,老老实实焊接好5个洞的那头,至少焊接4根,DS那根可以不用,但是既然都能焊接4根了,也不在乎多1根了,我一次性把两头(一头5根,一头7根)都焊接好了;

2、焊好就是接线了,这里不会有坑,4根线没人会接错的;

3、接下来就是需要一个测试程序了,2块钱买来的地方未必会提供,客服一般都是机器人,这时如果没有一个测试完好的程序,新手就会很迷茫,到底这东西有没有用,下一步不知道从哪里开始着手了。现在不用慌了,以下有一个完整的程序,我测试了100遍以上。硬件上我用的是Arduino UNO R3,由于只有电源正负2根和SCL、SDA2根共4根线,所以硬件连接上不用考虑什么硬件不一致的问题。另外,我还可以提供部分技术支持,尽管留言。到这里就完成一半了,下面一半是代码了;

4、代码的第一个问题可能是你店家带来的声明是不对的,应该使用RTC_DS1307 RTC来定义RTC变量,而不是DS1307 RTC;(RTClib等库是需要的,这个我不再这里赘述)

5、当前时间设置用这句:RTC.adjust(DateTime(2021, 5, 9, 15, 43, 01));

6、秒钟肯定不对的,不过不用慌,文末的代码还包括了一点我自己的代码来进行秒钟微调,不过现在不用管这种小事,稍后反注释//#define HACK_ADJUST这句我们再来调整准确的秒钟;

7、程序刷入进去之后,第一个可能遇到的问题就是时间动了,但是每次重启又还是原来的时间。这个问题仔细想想就不难发现,因为我们刚刚刷进去的代码就包括了一个写死的时间呀,那每次启动可不又像第一次来设置时间时一模一样了?这和时光倒流效果一样,对吧 :P

8、所以,一旦成功写入读出时间了,那就再也不需要设置时间这一句了,马上注释掉并再次烧入程序;  //RTC.adjust(DateTime(2021, 5, 9, 15, 43, 01)); //设置初始时间

9、现在程序里没有任何地方可以修改你的时间了,想修改都修改不了了,呵呵,这时不是还有秒针不太对的问题吗,用这句#define HACK_ADJUST打开我写的那段代码功能,修改其中这句中的数字1为合适的值: Wire.write(bin2bcd(sec + 1));  //秒级微调——+1可以改为合适的调整值,不要加太多,避免进位,或者用减法更靠谱。这段代码是我从Wire库和RTClib库里面抽取并修改形成的;

10、这下好像就全完成了,还有一些什么要注意的呢,让我想想。对咯,就是拔线的时候注意不要碰到那个3V锂电池(CR2032),否则时间会变成2000-01-01,不过,这又有什么慌的呢,重做一遍就是了。如果我没有遇到我怎么会知道呢,O(∩_∩)O

#include <Streaming.h>
#include <Wire.h>//IIC库
#include <RTClib.h>
#include <LiquidCrystal_I2C.h>//#define HACK_ADJUST
#ifdef HACK_ADJUST
int adjusted = 0;
static uint8_t bin2bcd(uint8_t val) {return val + 6 * (val / 10);
}
#endifLiquidCrystal_I2C lcd(0x27, 16, 2); //设置LCD1602设备地址0x27
RTC_DS1307 RTC;void setup()
{Wire.begin(); // 开启总线,这个用于I2C的使用RTC.begin();  // 初始化时钟//RTC.adjust(DateTime(2021, 5, 9, 15, 43, 01)); //设置初始时间lcd.init();                  // 初始化LCDlcd.backlight();             //设置LCD背景灯亮Serial.begin(115200);
}void loop()
{DateTime dateTime = RTC.now(); // 获取现在的时间Serial << dateTime.year() << "-" << dateTime.month() << "-" << dateTime.day() << endl;Serial << dateTime.hour() << ":" << dateTime.minute() << ":" << dateTime.second() << endl;//显示年lcd.setCursor(3, 0);lcd.print(dateTime.year());//显示月lcd.print('-');if (dateTime.month() > 9){lcd.print(dateTime.month());}else{lcd.print('0');lcd.print(dateTime.month());}//显示日lcd.print('-');if (dateTime.day() > 9){lcd.print(dateTime.day());}else{lcd.print('0');lcd.print(dateTime.day());}//显示小时lcd.setCursor(4, 1);if (dateTime.hour() > 9){lcd.print(dateTime.hour());} else{lcd.print('0');lcd.print(dateTime.hour());}//显示分钟lcd.print(':');if (dateTime.minute() > 9){lcd.print(dateTime.minute());}else{lcd.print('0');lcd.print(dateTime.minute());}//显示秒lcd.print(':');if (dateTime.second() > 9){
#ifdef HACK_ADJUST    //A hacking adjust by Safirst C. Keint sec = dateTime.second();if (!adjusted){Wire.beginTransmission(DS1307_ADDRESS);Wire.write((byte)0);Wire.write(bin2bcd(sec + 1));  //秒级微调——+1可以改为合适的调整值,不要加太多,避免进位,或者用减法更靠谱。Wire.endTransmission();adjusted = 1;}
#endiflcd.print(dateTime.second());}else{lcd.print('0');lcd.print(dateTime.second());}delay(990);
}

Tiny RTC DS1307 时钟模块 完整代码(Arduino)及一些要注意的地方相关推荐

  1. ardino DS1307时钟模块

    ardino开发版 x1 DS1307时钟模块x1 接线: VCC-5V GND-GND(负极) CLK-SCL DAT-SDA 代码: #include <RtcDS1307.h> #i ...

  2. DS1307时钟模块

    https://blog.csdn.net/chuannaoxuan4674/article/details/101048391?ops_request_misc=%257B%2522request% ...

  3. Android 自定义控件,模仿小米秒表样式的时钟,完整代码注解

    一个模仿小米手机秒表样式的安卓小应用程序,利用自定义控件实现. 超详细的代码注释 开发工具为:Android Studio 看图 代码: 大表盘自定义控件:[xiaomiClock ] public ...

  4. 51DS1302时钟及可调时钟(完整代码)

    DS1302时钟 #include <REGX52.H> #include "LCD1602.h" #include "DS1302.h" void ...

  5. Arduino 使用DS1307时钟

    相关资料链接 链接:https://pan.baidu.com/s/1eE0rkaSJsKJMU_RUorS5OA 提取码:3ujh 1.1 介绍: 这个模块主要用到实时时钟芯片DS1307.是美国D ...

  6. Python 拼图成心2.0【重新梳理】【附完整代码】

    最新版本,点这里 之前一时兴起,写了个生成心形贴图的程序[链接在这里]但是只是把功能实现了,有很多鸡肋还有逻辑之类混乱的,于是又重新整理了一下. 需要用到的库 import os import os. ...

  7. 树莓派3B添加DS1307 RTC时钟模块

    前段时间用树莓派做了一个小项目,到实施阶段后才突然发现树莓派没有硬件时钟,最后在某宝找到了时钟模块,商家只提供硬件,不提供技术服务,只能百度搜索配置方法,最后参照树莓派 3B+ 安装 DS1307 R ...

  8. (米联客MSXBO)开发板 osrc-lab LINUX下RTC时钟模块使用

    概述 RTC(real-time clock)简称实时时钟,是日常生活中应用最为广泛的消费类电子产品之一.它为人们提供精确的实时时间或者为电子系统提供精确的时间基准,而备份电池在掉电后数据不丢失,在下 ...

  9. 「雕爷学编程」Arduino动手做(29)——DS1302时钟模块

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...

最新文章

  1. [nRF51822] 8、基础实验代码解析大全 · 实验11 - PPI
  2. 成功解决graphviz\backend.py, line 162, in pipe raise ExecutableNotFound(args) graphviz.backend.Executab
  3. 《Python高效开发实战》实战演练——开发Django站点1
  4. CVPR 2019 | 近日新出论文汇总(含视频目标分割、GAN、度量学习、高效语义分割等主题)...
  5. 《天天数学》连载46:二月十五日
  6. HTML5拖放API(代码展示)
  7. springboot获取客户端发来的数据
  8. RabbitMQ入门:发布/订阅(Publish/Subscribe)
  9. 微信小程序服务器端语言,微信小程序后端用什么语言好
  10. A 股历年三大财务报表 API 接口
  11. D-Link 智能家居新品将登陆苹果中国官网
  12. [转载]视频格式介绍
  13. mybatis的xmly文件与必依赖
  14. 高效的敏捷测试第四课 测试的团队协作
  15. 父亲节华为P40软文营销广告
  16. 关于平面战机射击游戏的一点小结
  17. Windows 清理磁盘
  18. PS基础入门教程-如何制作GIF动画
  19. 多元线性回归算法: 线性回归Linear Regression、岭回归Ridge regression、Lasso回归、主成分回归PCR、偏最小二乘PLS
  20. uni-app 点击图片放大预览

热门文章

  1. VUE 音频MP3播放插件
  2. postgresql系统架构图
  3. 常用linux指令集
  4. 国内市场占有率第一,份额上涨至46.4%,阿里云还在涨!
  5. vb microsoft html object library,HTML对象库简介(Microsoft HTML Object Library - mshtml.tlb)...
  6. sketch八个高效的快捷方式(上)
  7. [全网首发]一款好看的个人主页源码
  8. CCM-SLAM跑自己的USB摄像头
  9. 南京邮电大学图书管理系统
  10. 发那科机器人点位编辑_发那科机器人指令编辑详细介绍