Найти в Дзене

Подключаем часы реального времени (RTC) к Arduino

Оглавление

Ну, что ж, немного практики - разберемся, как подсоединить к Arduino популярные у самодельщиков часы реального времени DS1302, DS1307, DS3231 и программировать их работу.

Теоретические разговоры о том, что есть RTC и как они работают - туть:

Подключение

Покажу пару вариантов подключения к аппаратному I2C (выводы SDA, SCL МК выведены на пины A4, A5 / 27, 28 Arduino UNO).

Теперь рассмотрим одну библиотеку для работы с часами в ArduinoIDE, установим текущие дату и время, попробуем по-выводить куда-нибудь, заведем будильник и поделаем чего-нибудь еще :)

RTClib by Adafruit

Библиотек для работы с часами на Arduino много, я решила обозреть вот эту библиотеку от Adafruit. Старые версии (1.X.X) работали самостоятельно, для работы с версиями новее 2 нужно доставить либу Adafruit BusIO.

Либа поддерживает часы DS1307, DS1302, DS3231, PCF8563S, PCF8523 и микроконтроллеры ATmega32, ATmega328, ATmega2560, ATiny85, а также ESP8266 и отладочные платы на ARM (Zero и Due).

В ней есть функции для настройки часов, чтения данных о времени и температуре, установки будильников, в общем, полный фарш.

Высокоуровневые обертки делают код симпатичнее, хоть и утяжеляют программу. Такая библиотека будет хорошим выбором для программистов, плохо знающих железо :)

Что ж, рассмотрим основные функции либы на примере DS1307 и DS3231 (у меня в наличии только DS1307, так что функции для 3231 закомменчены):

Что мы видим в терминале:

-2

Вот такие пироги с ардуинятами, посмотрите под капот почитайте исходники библиотеки, поделитесь в комментариях своими любимыми библиотеками.

Следующая статья будет посвящена работе с RTC в Atmel Studio и CodeVisioAVR.

Предложу почитать :)

Статья про пару альтернатив Serial Monitor Arduino:

Миниобзор программ-терминалов
Приключения электроника29 июня 2021

И одна про C/C++ для МК