Рассмотрим подключение модуля часов реального времени DS3231 к плате Arduino MEGA. Используем выводы Arduino MEGA 20 (SDA) и 21(SCL).
Схема соединений представлена на рис. 7.2.
Рис. 7.2. Схема подключения модуля DS3231 к плате Arduino MEGA
Сначала добавим вывод времени на экран дисплея (главное меню). Для программирования нам понадобятся Arduino-библиотеки Wire (встроенная в Arduino IDE), Time и DS1307RTC. В цикле будем получать данные о текущем времени (часы, минуты) с модуля DS3231 и выводить на экран дисплея.
Вносим дополнительный код в скетч. Подключаем библиотеки:
#include
#include
#include
Создаем переменную
tmElements_t tm;
Добавляем в скетч переменную для периодичности опроса модуоя RTC:
unsigned long millis3231;
И в основной цикл loop() добавляем код получения данных времени и вывода на экран дисплея (см. листинг 7.1).
Листинг 7.1
void loop() {
…………
// показания RTC
if(millis()-millisds3231 >= 5000 && screen==0) {
set_display_data_RTC(BLACK);
RTC.read(tm);
set_display_data_RTC(MAGENTA); // вывод на дисплей
millisds3231=millis();
}
……..
}
Процедура set_display_data_RTC() расположена в файле display.ino.
// вывести текущее значение для RTC
void set_display_data_RTC(unsigned int color) {
tft.setTextSize(2);
tft.setTextColor(color);
tft.setCursor(80, 50);
if(tm.Hour<10)
tft.print("0");
tft.print(tm.Hour);
tft.print(":");
if(tm.Minute<10)
tft.print("0");
tft.print(tm.Minute);
}
После загрузки скетча на плату Arduino на экране отображается реальное время, получаемое с модуля DS3231 (см. рис. 7.3).
Рис. 7.3. Вывод текущего времени на экран дисплея
Скачать данный скетч можно на сайте www.arduino-kit.ru по ссылке.