Часы реального времени DS1302 (Arduino)

DS1302 — модуль часов реального времени ведет отсчет времени в секундах, минутах, часах, датах месяца, месяцах, днях недели и годах с учетом высокосности текущего года вплоть до 2100 г. Электронная схема модуля включает в себя микросхему, источник питания и кварцевый резонатор. Кварцевый резонатор работает на частоте 32768 Гц.

Ниже показан простой пример скетча для вывода времени в монитор порта. Для первоначальной установки времени необходимо раскомментировать строчку:

// time.settime(0,30,18,24,10,19,4); // Записываем время в модуль: сек, мин, час, дата, месяц, год (2019 = 19), день недели (пон = 1).

Загрузить скетч в плату Arduino, а затем закомментировать строчку и по новой загрузить скетч.

Библиотека — iarduino_RTC.zip

#include <iarduino_RTC.h>
iarduino_RTC time(RTC_DS1302, 6, 7, 8); // RST, CLK, DAT
 
void setup(){Serial.begin(9600);
  time.begin();
 // time.settime(0,30,18,24,10,19,4); // Записываем время в модуль: сек, мин, час, дата, месяц, год (2019 = 19), день недели (пон = 1).
}
 
void loop(){
  time.gettime();
  //Год
  Serial.print(20, DEC);
  Serial.print(time.year);
  Serial.print("-");
  //Месяц
  Serial.print(time.month / 10);
  Serial.print(time.month % 10);
  Serial.print("-");
  //День
  Serial.print(time.day / 10);
  Serial.print(time.day % 10);
  Serial.print(" ");
  //Час
  Serial.print(time.Hours / 10);
  Serial.print(time.Hours % 10);
  Serial.print(":");
  //Минуты
  Serial.print(time.minutes / 10);
  Serial.print(time.minutes % 10);
  Serial.print(":");
  //Секунды
  Serial.print(time.seconds / 10);
  Serial.println(time.seconds % 10);
  // Формат даты
  Serial.println(time.gettime("d-m-Y, H:i:s, D"));
  // День недели
  Serial.println(time.weekday);
 
  delay(1000);
}


Простые часы на LCD1602 I2C

#include <iarduino_RTC.h>
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
  iarduino_RTC time(RTC_DS1302, 6, 7, 8); // RST, CLK, DAT
  LiquidCrystal_I2C lcd(0x27,16,2);  // Устанавливаем дисплей
 
void setup(){Serial.begin(9600);
  time.begin();
  lcd.init();                     
  lcd.backlight();// Включаем подсветку дисплея
 // time.settime(0,30,18,24,10,19,4); // Записываем время в модуль: сек, мин, час, дата, месяц, год (2019 = 19), день недели (пон = 1).
}
 
void loop(){
  time.gettime();
  lcd.setCursor(4, 0);
  lcd.print(time.gettime("H:i:s"));
  lcd.setCursor(1, 1);
  lcd.print(time.gettime("d-m-Y D"));
  delay(100);
}

Comments

  1. Спасибо за описание. Применяю этот модуль к проекту часов на ламповых индикаторах. Модуль подключаю по I2C. Никогда не сталкивался с часами реального времени, поэтому у меня некоторое недопонимание в установке. Насколько я понял смысл, первоначально в скетче строку // time.settime(0,30,18,24,10,19,4); // Записываем время в модуль: сек, мин, час, дата, месяц, год (2019 = 19), день недели (пон = 1). я записываю без начальных символов //. вручную вписываю время и дату и заливаю скетч. Потом эту же строку я записываю с начальными символами //, но время и дату не вписываю. Должно произойти обновление времени по времени компиляции?

    1. Выставляете время (заполняете строку). Убираете // и заливаете скетч, потом снова ставите // и снова заливаете скетч, если не поставить // то при старте всегда будет устанавливаться время которое Вы указали в строке.
      По времени компиляции это DS3132, DS1302 так не умеют.
      Если честно то DS1302 мне не понравился, не очень точные часы, кварц надо сразу менять. DS3132 намного лучше.

      1. Я то же посмотрел отзывы об этом модуле. Всё таки решил купить DS3231.и использовать оригинальный скетч. Доделаю- выставлю видео часов, аналогичных Вашим, но на индикаторах ИН-12.

          1. В отличии от знаковых ИН. ИВ это семисегментные.Там дешифратор другой нужен, формирующий из сегментов число. В советских часах Электроника такие стояли, но там применялась узкоспециальная микросхема. Думаю, что если использовать к514ид2 и на выходе высоковольтные транзисторные ключи, то всё получится.

            1. Дешифратор ставить не буду, 27 вольт на сегменты и сетку буду подавать через транзисторы bc547, нить накала 5 В через все лампы 4 шт, получится по 1,25 В. Ардуино будет сам как дешифратор.

              1. Вот только с накалом будут проблемы. Лучше выделить отдельно напряжение накала и параллельно запитать. Я однажды делал ламповый усилитель. Не было обмотки 6 В на накал. были 2 по 12 В. Решил пару входных ламп последовательно на одну обмотку и пару выходных на другую. Короче, одна из ламп «недогревалась». Пришлось мотать.

                1. Не хочу усложнять схему, если не получится, то буду пробовать что-то другое. Питание всей схемы 9 В, преобразователь поднимет его до 27, стабилизатор до 5 В, накал как получится, надо эксперементировать.

  2. Доброго дня. Понимаю, что своим вопросом вызову у Вас улыбку…год уже прошёл этому проекту. И всё таки…я эти часы собрал, они у меня работают на кухне, удобно. Вот только два раза в год возникает необходимость перевода времени на летнее и зимнее. Приходится их подключать к компу и переписывать в программе время, дату. Возможно ли введение одной кнопки, чтобы изменять показания часов?

  3. Благодарю. Работает. Попытался сам ещё добавить D10 , чтобы и минуты можно было выставлять, но что то напутал, скетч не компилируется. В принципе итак неплохо. За почти год работы часы идут точно минута в минуту.

  4. Спасибо. Я именно так же и сделал, но программа пишет ошибку компиляции, мол mm не задикларированно. Попробую влить Вашу прошивку, может я чего со знаками напутал.

Добавить комментарий

Войти с помощью: