Arduino和DS3231实时时钟教程

最后都变了- 提交于 2020-01-25 09:23:58

在本Arduino教程中,我们将学习如何使用DS3231实时时钟模块。您可以观看以下视频或阅读下面的书面教程。

Arduino和DS3231实时时钟教程

概述

这里出现的第一个问题是,当Arduino本身内置计时器时,为什么我们实际上需要为Arduino项目使用单独的RTC。 原因是即使我们对微控制器重新编程或断开主电源,RTC模块也可以依靠电池运行,并且可以跟踪时间。

DS3231实时时钟

DS3231是一款低成本,高精度的实时时钟,可以维护小时,分钟和秒,以及日,月和年的信息。此外,它还可以自动补偿闰年和少于31天的月份。

该模块可以在3.3V或5V电压下工作,使其适用于许多开发平台或微控制器。电池输入为3V,典型的CR2032 3V电池可以为模块供电,并可以将信息保存一年以上。

该模块使用I2C通信协议,这使得与Arduino开发板的连接非常容易。

这是电路原理图:

图略

因此,我们只需要4根线,即为模块供电的VCC和GND引脚,以及两个I2C通信引脚SDA和SCL。

程式设计

连接模块后,我们需要对Arduino开发板进行编程以与实时时钟配合使用。 但是,在对Arduino和I2C模块之间的通信进行编程时,代码并不那么简单。 幸运的是,DS3231 RTC已有多个库,可以在互联网上找到它们。

因此,一旦我们下载并安装了库,就可以使用其第一个演示示例来初始激活RTC模块的时钟。 在演示示例代码的设置部分,我们可以注意到需要取消注释三行,以便初始设置星期几,时间和数据。

// Code from the Demo Example of the DS3231 Library

void setup()
{
// Setup Serial connection
Serial.begin(115200);
// Uncomment the next line if you are using an Arduino Leonardo
//while (!Serial) {}

// Initialize the rtc object
rtc.begin();

// The following lines can be uncommented to set the date and time
//rtc.setDOW(WEDNESDAY); // Set Day-of-Week to SUNDAY
//rtc.setTime(12, 0, 0); // Set the time to 12:00:00 (24hr format)
//rtc.setDate(1, 1, 2014); // Set the date to January 1st, 2014
}

第一行用于设置星期几,第二行用于设置时间,以小时,分钟和秒为单位,第三行用于设置日期,以天,月和年为单位。

上载此代码后,我们需要对三行进行注释,然后再次重新上传代码。

详情参阅http://viadean.com/arduino_ds3231.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!