arduino ds1302时钟模块oled
时间: 2023-07-13 13:13:07 浏览: 164
arduino DS1302 时钟模块例程
5星 · 资源好评率100%
以下是基于Arduino UNO,DS1302时钟模块和OLED显示屏的代码示例:
```C++
#include <DS1302.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// DS1302连接引脚
const int CLK = 2;
const int DAT = 3;
const int RST = 4;
DS1302 rtc(CLK, DAT, RST);
// OLED连接引脚
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
void setup() {
Serial.begin(9600);
// 设置时钟时间,格式:年,月,日,小时,分钟,秒
rtc.writeProtect(false);
rtc.halt(false);
rtc.setDOW(SATURDAY);
rtc.setTime(12, 0, 0);
rtc.setDate(1, 1, 2000);
rtc.writeProtect(true);
// 初始化OLED显示屏
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 0);
}
void loop() {
// 获取当前时间
rtc.readTime();
// 显示时间,格式:小时:分钟:秒
Serial.print(rtc.hrs, DEC);
Serial.print(':');
Serial.print(rtc.min, DEC);
Serial.print(':');
Serial.println(rtc.sec, DEC);
// 清空OLED显示屏
display.clearDisplay();
// 显示时间,格式:小时:分钟:秒
display.setCursor(0, 0);
display.print("Time: ");
if (rtc.hrs < 10) {
display.print('0');
}
display.print(rtc.hrs, DEC);
display.print(':');
if (rtc.min < 10) {
display.print('0');
}
display.print(rtc.min, DEC);
display.print(':');
if (rtc.sec < 10) {
display.print('0');
}
display.println(rtc.sec, DEC);
// 显示日期,格式:月/日/年
display.setCursor(0, 10);
display.print("Date: ");
if (rtc.mon < 10) {
display.print('0');
}
display.print(rtc.mon, DEC);
display.print('/');
if (rtc.date < 10) {
display.print('0');
}
display.print(rtc.date, DEC);
display.print('/');
display.print(rtc.year, DEC);
// 刷新OLED显示屏
display.display();
// 等待1秒钟
delay(1000);
}
```
在上面的代码中,我们使用了 `DS1302.h` 库来连接和读取DS1302时钟模块,并使用 `Adafruit_SSD1306.h` 库来连接和控制OLED显示屏。在 `setup()` 函数中,我们设置了时钟的起始时间,并初始化了OLED显示屏。在 `loop()` 函数中不断读取和显示当前时间,并在OLED显示屏上显示时间和日期。
阅读全文