在本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
国外课栈 发布了185 篇原创文章 · 获赞 16 · 访问量 7万+ 私信 关注