Итак, начнем... Начнем с самого главного, если мы строим часы, то естественно начинать нужно с подключения часового модуля. В качестве часового модуля мы используем модуль реального времени DS1302.

        Также, нам необходимо будет установить библиотеку для работы с данным модулем, называется она iarduino_RTC.h, она взята с сайта iarduino.ru и на наш взгляд является очень удобной в плане работы с модулями DS1302, DS13071 и DS3231. Прекрасный функционал, подробное описание функций и наличие качественных примеров работы - это большой плюс данной библиотеки, кроме того она является абсолютно бесплатной(как в общем то и все библиотеки созданные для работы с платами Arduino). Итак, кто не знает как устанавливать библиотеки для Arduino, то добро пожаловать в соответствующую статью. Ну а мы сразу же можем начать работу с ней, для этого мы возьмем только самые необходимые нам функции. Если кто либо захочет расширить свои познания  о том как более продвинуто использовать данную библиотеку, то в примерах этой библиотеки можно найти хорошо прокомментированные скетчи. Пожалуй начнем... Таблица подключений приведена ниже, достаточно всё просто не так ли?

 

 

        После того как модуль был подключен, нужно всё же еще раз убедиться, что пины питания подключены корректным образом, всё таки эти китайские модули горят на раз-два... Не хотелось бы получить кусок ненужной платы так и не начав нашу работу с ней. И если всё верно, то можно "залить" нижеследующий скетч в плату Arduino.

 

#include "iarduino_RTC.h"

//Определяем пины подключения модуля DS1302 к плате Arduino
#define DS_DAT 8
#define DS_CLK 7
#define SS_RST 6

//Создаём объект time класса iarduino_RTC с указанием пинов подключения
iarduino_RTC time(RTC_DS1302, SS_RST, DS_CLK, DS_DAT);

void setup()
{
  //Открываем последовательное соединение на скорости 9600 бод
  Serial.begin(9600);

  //Запускаем модуль DS1302
  time.begin();
}

void loop()
{
  //Выполняем задержку чтобы не выводить данные слишком часто
  delay(300);
  //Получаем все значения времени
  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);
}

 

        Как выглядит работа скетча, можно увидеть на снимке монитора порта. Дата выводится в формате Год-Месяц-День, время выводится в стандартном формате Часы-Минуты-Секунды.

 

 

        Как видно, скетч достаточно хорошо прокомментирован, это должно помочь в решении возникающих вопросов. Именно этот скетч станет для нас отправной точкой для дальнейшего развития проекта по построению часов на базе популярной платформы Arduino. Подводя итог, можно сказать что первый шаг сделан, далее нас ждет работа с датчиком атмосферного барометра/термометра BMP180. Ведь наши часы должны показывать и температуру, классика жанра для Arduino...