Урок 18. Подключение RTC часы реального времени с кнопками
В этом уроке мы научимся не только выводить, но и устанавливать время RTC модуля при помощи трёх кнопок.
Нам понадобится:
-
х 1шт.
- RTC модуль Trema на базе чипа DS1307 х 1шт.
- LCD дисплей LCD1602 IIC/I2C(синий) или LCD1602 IIC/I2C(зелёный) х 1шт. х 1шт. х 1шт. х 3шт. х 2шт.
Для реализации проекта нам необходимо установить библиотеки:
- Библиотека iarduino_RTC (для подключения RTC часов реального времени DS1302, DS1307, DS3231)
- Библиотека LiquidCrystal_I2C_V112 (для подключения дисплеев LCD1602 по шине I2C)
О том как устанавливать библиотеки, Вы можете ознакомиться на странице Wiki — Установка библиотек в Arduino IDE .
Видео
Схема подключения:
Подключение модулей RTC и LCD, данного урока, осуществляется к аппаратным выводам SDA, и SCL.
RTC модуль Trema на базе чипа DS1307 / LCD дисплей на базе чипа LCD1602 | Arduino Uno |
---|---|
GND | GND |
Vcc | +5V |
SDA (Serial DAta) | A4 |
SCL (Serial CLock) | A5 |
подключение кнопок: кнопка «SET» к выводу 2, кнопка «UP» к выводу 3 и копка «DOWN» к выводу 4.
Код программы:
При подключении библиотеки «iarduino_RTC» нужно указать, с каким модулем ей работать, в данном случае это модуль Trema на базе чипа DS1307:
Аналогичный алгоритм действий при подключении библиотеки «LiquidCrystal_I2C» для работы с LCD дисплеем LCD1602 IIC/I2C(синий) или LCD1602 IIC/I2C(зелёный) :
Осталось подключить 3 кнопки: «SET», «UP» и «DOWN» . Для этого им нужно назначить номера выводов и указать, что эти выводы работают как вход:
В библиотеке «iarduino_RTC», для работы с датой и временем реализованы две функции: settime() — установка и gettime() — получение времени.
В библиотеке «iarduino_RTC» доступны 9 числовых переменных: seconds, minutes, hours, Hours, midday, day, weekday, month и year, значения которых обновляются после каждого вызова функции gettime(). Эти переменные мы будим использовать для изменения даты и времени.
Еще одна функция библиотеки «iarduino_RTC», которая нам понадобится, это blinktime(), она заставляет функцию gettime(), мигать одним из параметров времени (0 — не мигать, 1 — мигать секундами, 2 — мигать минутами, 3 — мигать часами, 4 — мигать днями и т.д.).
И последнее, о чем надо позаботиться перед созданием кода программы — это алгоритм работы кнопок и определение переменных
Алгоритм работы кнопок следующий:
- В режиме вывода даты или времени (обычный режим):
- Кратковременное нажатие на кнопку SET переключает вывод даты и вывод времени
- Удержание кнопки SET переводит часы в режим установки даты или времени (зависит от того, что было на дисплее, дата или время)
- Кнопки UP и DOWN неактивны.
- Кратковременное нажатие на кнопку SET — переход между устанавливаемыми параметрами (сек, мин, час, дни, мес, год, д.н.)
- Удержание кнопки SET выводит часы из режима установки
- Каждое нажатие на кнопку UP увеличивает значение устанавливаемого параметра даты или времени
- Каждое нажатие на кнопку DOWN уменьшает значение устанавливаемого параметра даты или времени
Исходя из алгоритма, нам понадобятся две переменные, назовем их: VAR_mode_SHOW и VAR_mode_SET . Первая будет указывать режим вывода (1-выводим_время, 2-выводим_дату). Вторая, будет указывать режим установки времени (0-нет, 1-сек, 2-мин, 3-час, 4-день, 5-мес, 6-год, 7-д.н.).
Источник: