====== Модуль часов DS-1302 ======
===== Описание =====
Модуль часов реального времени с независимым питанием.
Контроллеры Arduino/Genuino не имеют встроенных часов реального времени. Для работы со временем есть функция millis(). Однако, для проектов где требуется время и дата, возможностей данной функции недостаточно и на помощь приходят часы реального времени. 

Модуль часов выполнен на основе чипа ds-1302. Часы позволяют считать секунды, минуты, часы, день недели, день месяца, месяц, год с учетом високосных лет до 2100 года. Есть возможность вести 12 или 24 часовой учет времени. Подсоединение осуществляется посредством стандартных проводов «папа-мама».
 
Отличительной особенностью модуля является автономное питание, поэтому при отсутствии внешнего питания часы всегда будут отсчитывать верное время. Однако, следует помнить, что при отсутствии батарейки, модуль работать не будет, даже при наличии внешнего источника питания. Перед первым использованием необходимо произвести установку текущей даты и времени.
 
Для питания модуля используется батарейка CR2032, 3В.

==== Технические характеристики ====
  * Напряжение внешнего питания: 5 - 5,5 В
  * Напряжение питания батареи: 2,0 - 3,5 В
  * Тип батарейки: CR2032
  * Потребляемый ток: 300 нА

==== Физические размеры ====
  * Модуль (Д х Ш х В): 44 х 23 х 11 мм

==== Плюсы использования ====
  * Недорогое решение для получения времени и даты
  * Просты в работе

==== Минусы использования ====
  * Не работают от внешнего питания (только от батареи)
  * При подключении требуется резистор, что затрудняет легкое подключение к модулю

==== Библиотека для работы с модулем ====
  * [[http://files.smartelements.ru/know_libs/ds1302.zip|Скачать (ds1302)]]

===== Примеры подключения и использования =====
**Пример 1:** В примере иллюстрируется подключение модуля часов к контроллеру, и установка времени на часах. (Примеры тестировались на контроллере Smart UNO)

^ Что нужно                                                                                                               ^ Кол-во, шт  ^
| [[http://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер Smart UNO]]                            |  1           |
| [[http://smartelements.ru/collection/moduli/product/chasy-realnogo-vremeni-s-avtonomnym-pitaniem-ds-1302|Модуль часов DS-1302]]                      |  1           |
| [[http://smartelements.ru/collection/provoda-i-kabeli/product/nabor-provodov-20-sht-20sm-papa-mama|Провода папа-мама]]  |  5           |
| [[http://smartelements.ru/collection/provoda-i-kabeli/product/nabor-provodov-20-sht-20sm-papa-papa|Провода папа-папа]]  |  1           |
| [[http://smartelements.ru/collection/radiodetali/product/nabor-rezistorov|Резистор 10 кОм]]                             |  1           |
| [[http://smartelements.ru/collection/raznoe/product/maketnaya-plata-mini|Макетная плата мини]]                          |  1           |

**Схема подключения:**
{{ главная:модули:rtc_module.jpg |}}

**Скетч для загрузки:**
Установку времени для часов достаточно запустить один раз
<file Arduino>
#include <DS1302.h> //подключение библиотеки для работы с часами

DS1302 rtc(10, 9, 8); //создание объекта часы

void setup() {
  rtc.halt(false); //запуск часов
  rtc.writeProtect(false); //снять защиту от записи

  //Установка даты
  rtc.setDOW(TUESDAY); //установка дня недели (только на английском)
  rtc.setTime(10, 48, 0); //установка времени (часы, минуты, секунды)
  rtc.setDate(21, 6, 2016); //Дата цифрами. "0" перед одиночной цифрой можно не ставить

}

void loop() {
  
}
</file>

**Пример 2:** В примере иллюстрируется подключение модуля часов к контроллеру, определение текущих значений времени и даты. Значения времени и даты выводятся в монитор Serial - порта. (Примеры тестировались на контроллере Smart UNO)

^ Что нужно                                                                                                               ^ Кол-во, шт  ^
| [[http://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер Smart UNO]]                            |  1           |
| [[http://smartelements.ru/collection/moduli/product/chasy-realnogo-vremeni-s-avtonomnym-pitaniem-ds-1302|Модуль часов DS-1302]]                      |  1           |
| [[http://smartelements.ru/collection/provoda-i-kabeli/product/nabor-provodov-20-sht-20sm-papa-mama|Провода папа-мама]]  |  5           |
| [[http://smartelements.ru/collection/provoda-i-kabeli/product/nabor-provodov-20-sht-20sm-papa-papa|Провода папа-папа]]  |  1           |
| [[http://smartelements.ru/collection/radiodetali/product/nabor-rezistorov|Резистор 10 кОм]]                             |  1           |
| [[http://smartelements.ru/collection/raznoe/product/maketnaya-plata-mini|Макетная плата мини]]                          |  1           |

**Схема подключения:**
{{ главная:модули:rtc_module.jpg |}}

**Скетч для загрузки:**
<file Arduino>
#include <DS1302.h> //подключение библиотеки для работы с часами

DS1302 rtc(10, 9, 8); //создание объекта часы

void setup() {
  rtc.halt(false); //запуск часов
  Serial.begin(9600); //инициализация Serial-порта
}

void loop() {
  String weekDay = rtc.getDOWStr(FORMAT_LONG); //получить день недели
  String theDate = rtc.getDateStr(); //получить дату
  String theTime = rtc.getTimeStr(); //получить время
  Serial.println("The day of week is " + weekDay); //вывести день недели
  Serial.println("The date is " + theDate); //вывести текущую дату
  Serial.println("Time: " + theTime); //вывести время

  delay(1000); //задержка на 1 секунду
}
</file>

