Модуль часов реального времени DS3231 (ZS-042) построен на микросхеме DS3231SN, которая является часами реального времени. В отличии от старой модели часов, например на микросхеме DS1307, эти часы содержат внутренний кварцевый резонатор, благодаря чему часы имеют точный ход.
Отличительные особенности:
- Точность ±2 ppm в диапазоне температур от 0°C до +40°C
- Точность ±3.5 ppm в диапазоне температур от-40°C до +85°C
- Вход для подключения автономного источника питания, позволяющего обеспечить непрерывную работу
- Рабочий температурный диапазон
- коммерческий: от 0°C до +70°C
- индустриальный: -от 40°C до +85°C
- Низкое потребление
- Часы реального времени, отсчитывающие секунды, минуты, часы, дни недели, дни месяца, месяц и год с коррекцией високосного года вплоть до 2100
- Два ежедневных будильника
- Выход прямоугольного сигнала с программируемой частотой
- Быстродействующие (400 кГц) I2C интерфейс
- 3.3 В питание
- Цифровой температурный датчик с точностью измерения ±3°C
- Регистр, содержащий данные о необходимой подстройке
- Вход/выход сброса nonRST
Используя библиотеку DS3231.h можно очень просто установить время часов по времени компиляции и вывести показания времени и температуры на индикатор LCD 1602.
#include <Wire.h> #include <DS3231.h>//https://github.com/jarzebski/Arduino-DS3231/archive/master.zip DS3231 clock;// Связываем объект clock с библиотекой DS3231 RTCDateTime DateTime;// Определяем сущность структуры RTCDateTime (описанной в библиотеке DS3231) для хранения считанных с часов даты и времени #include <LiquidCrystal.h> LiquidCrystal lcd(7, 8, 9, 10, 11, 12);// RS,E,D4,D5,D6,D7 void setup(){ Serial.begin(9600); lcd.begin(16, 2);// LCD 16X2 Wire.begin(); clock.begin();// Инициализируем работу с объектом библиотеки DS3231 // clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча // clock.setDateTime(2016, 9, 15, 0, 0, 0);// Установка времени вручную (Год, Месяц, День, Час, Минута, Секунда) } void loop(){ DateTime = clock.getDateTime(); // Считываем c часов текущие значения даты и времени в сущность DateTime lcd.setCursor(0,0); lcd.print(clock.dateFormat("H:i:s ", DateTime));// выводим часы, минуты и секунды lcd.print(clock.readTemperature(),1);lcd.print((char)223);lcd.print("C");// выводим значение температуры lcd.setCursor(0,1); lcd.print(clock.dateFormat("D d M Y", DateTime));// выводим день недели, дату, месяц и год delay(200); } /* ******************************** Форматы времени *********************************** Date formats (Day) ------------------ * d : Day of the month, 2 digits with leading zeros (01 to 31) * D : A textual representation of a day, three letters (Mon through Sun) * j : Day of the month without leading zeros (1 to 31) * l : A full textual representation of the day of the week (Sunday through Saturday) * N : ISO-8601 numeric representation of the day of the week (1 for Monday through 7 for Sunday) * S : English ordinal suffix for the day of the month, 2 characters (st, nd, rd or th. Works well with j) * w : Numeric representation of the day of the week (0 for Sunday through 6 for Saturday) * z : The day of the year (0 through 365) Date formats (Month) -------------------- * F : A full textual representation of a month, such as January or March (January through December) * m : Numeric representation of a month, with leading zeros (01 through 12) * M : A short textual representation of a month, three letters (Jan through Dec) * n : Numeric representation of a month, without leading zeros (1 through 12) * t : Number of days in the given month (28 through 31) Date formats (Year) ------------------- * L : Whether it's a leap year (1 if it is a leap year, 0 otherwise) * Y : A full numeric representation of a year, 4 digits (Examples: 1999 or 2003) * y : A two digit representation of a year (Examples: 99 or 03) Date formats (Time) ------------------- * a : Lowercase Ante meridiem and Post meridiem (am or pm) * A : Uppercase Ante meridiem and Post meridiem (AM or PM) * g : 2-hour format of an hour without leading zeros (1 through 12) * G : 24-hour format of an hour without leading zeros (0 through 23) * h : 12-hour format of an hour with leading zeros (01 through 12) * H : 24-hour format of an hour with leading zeros (00 through 23) * i : Minutes with leading zeros (00 to 59) * s : Seconds, with leading zeros (00 through 59) Dare formats (Full Date/Time) ----------------------------- * U : Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT) */
Установка времени часов возможна по времени компиляции, а так же в ручном режиме:
//clock.setDateTime(__DATE__, __TIME__);
//clock.setDateTime(2016, 9, 15, 0, 0, 0);// Установка времени вручную (Год, Месяц, День, Час, Минута, Секунда)
Раскомментируйте одну из строк для установки времени, загрузите скетч, убедитесь что время выставлено правильно, закомментируйте строку и по новой обновите скетч.