Часы DS3231 обладают высокой точностью. Они подключаются к Arduino по протоколу I2C двумя проводами, плюс питание и земля. Подключение к Arduino Pro Mini: A4 — SDA, A5 — SCL, VCC — VCC, GND — GND. Datasheet можно посмотреть здесь DS3231.
Я использовал библиотеку — DS3231RTC.h, скачать ее можно здесь https://github.com/trunet/DS3231RTC. Она используется совместно с библиотекой Time.h, последнюю версию можно взять здесь: https://github.com/PaulStoffregen/Time.
Примеры использования:
tmElements_t tm; // Структура для хранения времени RTC.read(tm); // Чтение времени RTC.write(tm); // Установка времени
Структура tmElements_t описана в Time.h:
typedef struct { uint8_t Second; uint8_t Minute; uint8_t Hour; uint8_t Wday; // day of week, sunday is day 1 uint8_t Day; uint8_t Month; uint8_t Year; // offset from 1970; } tmElements_t, TimeElements, *tmElementsPtr_t;
Там же находятся полезные константы и функции. Среди них:
//convenience macros to convert to and from tm years #define tmYearToCalendar(Y) ((Y) + 1970) // full four digit year #define CalendarYrToTm(Y) ((Y) - 1970) #define tmYearToY2k(Y) ((Y) - 30) // offset is from 2000 #define y2kYearToTm(Y) ((Y) + 30) void breakTime(time_t time, tmElements_t &tm); // break time_t into elements time_t makeTime(tmElements_t &tm); // convert time elements into time_t
Уважаемый автор, а не проверяли — какое минимальное напряжение питания у этих часов ? У меня устройство в питанием 3 вольта и с часами ds1338 -33, при снижении питания до 2,9в уже не работает. Ищу замену часикам.
Мин напряжение питания 2,3V. Так написано в спецификации, сам не проверял. Пост отредактировал, в нем теперь есть ссылка на datasheet.