本文章介绍如何在 Arduino 中使用 DS1307 实时时钟 (RTC) 模块。您也可以按照本指南使用 DS3231 RTC 等其它类似模块。
目录
实时时钟模块介绍
实时时钟模块如下图所示(正面图和背面图)。
首次使用该模块时,需要焊接一些引脚。
如上图所示,模块安装了备用电池。这样,即使 Arduino 没有为模块供电,模块也能保留时间。这样,每次开关模块时,时间都不会重置。
该模块使用 I2C 通信。这意味着它只需使用 2 个引脚就能与 Arduino 通信。
引脚接线
RTC 模块的接线非常简单!
Pin | 连接 Arduino Uno 的线路 |
SCL | A5 |
SDA | A4 |
VCC | 5V |
GND | GND |
如果您使用的是其它 Arduino 板而不是 uno,请查看它们的 SCL 和 SDA 引脚。
- Nano:SDA(A4);SCL(A5)
- MEGA:SDA(20);SCL(21)
- Leonardo: SDA(20);SCL(21)
示例:在串行监视器上显示日期和时间在串行监视器上显示日期和时间
本例在串行监视器上显示日期和时间。
所需部件
在这个例子中,您需要以下部件(点击下面的链接,在 Maker Advisor 找到最优惠的价格):
- Arduino UNO – 阅读最佳 Arduino 入门套件
- DS1307 RTC 模块
- 连接线
示意图
如下图所示,将实时时钟模块连接到 Arduino。
代码
与 RTC 合作需要两个重要步骤:
- 设置当前时间,以便 RTC 知道现在的时间
- 保留时间,使 RTC 即使在关闭时也能始终提供正确的时间
在实时时钟中设置当前时间
要设置当前时间,您需要更改所提供的代码。
- 使用函数 setDS3231time() 设置当前时间
函数的参数用红色标出:秒、分、小时、星期、日期、月份和年份(按此顺序排列)。星期日是一周中的第 1 天,星期六是第 7 天。 别忘了取消这行代码的注释。
设置好当前时间后,您就可以上传所提供的代码,并按要求进行修改。
所提供的代码由 tronixstuff 的 John Boxall 编写。你可以在这里阅读他的教程。
保留实时时钟中的时间
如果不想每次关闭 RTC 时都重置时间,则应执行以下操作:
- 设置时间后,您应该注释设置时间的函数,然后再次上传代码。
这是设置 RTC 时间的重要步骤。如果不这样做,每次重置 RTC 时,它都会显示之前设置的时间,而不是当前时间。
演示
以 9600 波特率打开串行监视器,就能看到结果。
这是串行监视器显示的当前日期和时间。
总结
希望本指南对您有所帮助。
RTC 模块非常有用,可以用作时钟、计时器等。