Каталог
Подключение DS1302 RTC и LCD1602 к Arduino

Подключение DS1302 RTC и LCD1602 к Arduino

Этот проект демонстрирует, как подключить и использовать модуль 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.

Пример кода

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

Комментарии
Отзывов еще никто не оставлял
Товары упомянутые в статье
В наличии
Предзаказ
арт. 181
Довольно распространенный модуль часов реального времени на схеме DS1302. Для...
300 тг
В наличии
Предзаказ
арт. 365
Символьный дисплей LCD1602 с синей подсветкой – жидкокристаллический дисплей (Liquid...
1 490 тг
Предзаказ
Предзаказ успешно отправлен!
Имя *
Телефон *
Добавить в корзину
Название товара
100 тг
1 шт.
Перейти в корзину
Обратный звонок
Запрос успешно отправлен!
Имя *
Телефон *
Заказ в один клик
С помощью уведомлений о заказе можно не только получать актуальную информацию по заказу, но и иметь быстрый канал связи с магазином