Подключение DS1302 RTC и LCD1602 к Arduino
Этот проект демонстрирует, как подключить и использовать модуль DS1302 RTC и LCD1602 дисплей с интерфейсом I2C для работы с датой и временем на платформе Arduino. Проект позволяет установить и получить текущую дату и время, выводя их на монитор порта и дисплей. DS1302 подключается к Arduino через пины 2, 3 и 4, а LCD1602 через A4 и A5. Такой подход полезен для различных проектов, требующих отображения и отслеживания времени.
Этот проект демонстрирует, как подключить и использовать модуль DS1302 RTC и LCD1602 дисплей для работы с датой и временем на платформе Arduino. Это полезно для проектов, требующих отслеживания и отображения текущей даты и времени.
Оборудование
Для выполнения проекта потребуется:
Arduino (например, UNO)
Модуль DS1302 RTC
LCD1602 дисплей с интерфейсом I2C
Соединительные провода
Схема подключения
Подключение DS1302 RTC:
DS1302 IC |
Arduino UNO |
---|---|
VCC2 |
3.3V |
GND |
GND |
SCLK (CLK) |
2 |
I/O (DAT) |
3 |
CE (RST) |
4 |
Подключение LCD1602 дисплея:
LCD1602 |
Arduino UNO |
---|---|
VCC |
5V |
GND |
GND |
SDA |
A4 |
SCL |
A5 |

Установка библиотеки
Для работы с дисплеем LCD1602 установите библиотеку LiquidCrystal_I2C. Скачать библиотеку можно с GitHub.
Скачайте библиотеку с GitHub.
Откройте Arduino IDE.
Перейдите в меню Скетч -> Подключить библиотеку -> Добавить .ZIP библиотеку.
Выберите скачанный архив и добавьте его в Arduino IDE.
Пример кода
#include <Wire.h>
#include <Alash_DS1302.h>
#include <LiquidCrystal_I2C.h>
// Подключение DS1302
#define DS1302_CLK_PIN 2
#define DS1302_IO_PIN 3
#define DS1302_CE_PIN 4
// Создание объекта RTC
Alash_DS1302 rtc = Alash_DS1302(DS1302_CLK_PIN, DS1302_IO_PIN, DS1302_CE_PIN);
// Создание объекта LCD
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define DATE_STRING_SHORT 3
const char monthNames_P[] PROGMEM = "JanFebMarAprMayJunJulAugSepOctNovDec";
const char dayNames_P[] PROGMEM = "SunMonTueWedThuFriSat";
void setup() {
delay(500);
Serial.begin(115200);
while (!Serial);
Serial.println(F("\nПример чтения DS1302 и вывода на LCD от Alash-electronics"));
Wire.begin();
Wire.setClock(100000);
lcd.init();
lcd.backlight();
lcd.clear();
while (!rtc.begin()) {
Serial.println(F("RTC не найден"));
delay(3000);
}
if (!rtc.setDateTime(12, 34, 56, 31, 12, 2024, 7)) {
Serial.println(F("Ошибка установки даты/времени"));
}
}
void loop() {
char name[DATE_STRING_SHORT + 1];
uint8_t hour, min, sec, mday, mon, wday;
uint16_t year;
if (!rtc.getDateTime(&hour, &min, &sec, &mday, &mon, &year, &wday)) {
Serial.println(F("Ошибка чтения даты/времени"));
return;
}
lcd.setCursor(4, 0);
lcd.print(hour);
lcd.print(":");
if (min < 10) lcd.print("0");
lcd.print(min);
lcd.print(":");
if (sec < 10) lcd.print("0");
lcd.print(sec);
strncpy_P(name, &(dayNames_P[wday * DATE_STRING_SHORT]), DATE_STRING_SHORT);
name[DATE_STRING_SHORT] = '\0';
lcd.setCursor(1, 1);
lcd.print(name);
strncpy_P(name, &(monthNames_P[(mon - 1) * DATE_STRING_SHORT]), DATE_STRING_SHORT);
name[DATE_STRING_SHORT] = '\0';
lcd.print(" ");
lcd.print(name);
lcd.print(":");
lcd.print(mday);
lcd.print(":");
lcd.print(year);
delay(1000);
}
Заключение
Этот проект демонстрирует, как легко можно использовать модули DS1302 RTC и LCD1602 для работы с датой и временем на платформе Arduino. Такой подход полезен для различных проектов, требующих отображения и отслеживания времени.