Подключение 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.

  1. Скачайте библиотеку с GitHub.

  2. Откройте Arduino IDE.

  3. Перейдите в меню Скетч -> Подключить библиотеку -> Добавить .ZIP библиотеку.

  4. Выберите скачанный архив и добавьте его в Arduino IDE.

Пример кода

ds1302_rtc_lcd1602.ino
#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. Такой подход полезен для различных проектов, требующих отображения и отслеживания времени.