Время и дата без часов. Вывод на разные дисплеи.

Время и дата без часов. Вывод на разные дисплеи.

Всем Привет.
В прошлом уроке мы научились получать время и дату не используя разные модули часов, а просто включив плату ESP. Мы просто подключаемся к серверу точного времени и забираем оттуда время равное своему часовому поясу. И не надо волноваться, что пропадёт интернет, часы всё равно будут идти, и если они вдруг убегут или отстанут, то при включении интернета они автоматически подстроятся.
Как подключиться к серверу я рассказывать не буду. Кто не смотрел видео, то посмотрите, а то не поймёте о чём это я. Это короткий пример того что должно получиться.

А это то что мы сделаем сегодня. Мы выведем наше время и дату на два разных дисплея. Один это модуль TM1637, а второй – LCD 1602.

Я использовал их потому, что они очень известны и широко применяются в Ардуино проектах. А ещё потому, что других у меня нет. Раньше было больше, но все ушли в разные поделки. Эти модули очень просто подключаются. Всего по двум проводам.
Теперь рассмотрим каждый по отдельности.

Начнём с модуля TM1637.
Здесь я сделал вывод только времени, но можно было бы сделать и вывод даты и температуры. Температуру так же можно брать с сервера погоды. Я делал подобное видео в теме Умный дом. Возможно, я ещё вернусь к этому примеру и дополню его всякими фишками. Всё будет зависеть только от вас.

На модуле TM1637 всего 4 контакта из которых 2 – это питание. Оставшиеся два подключаем так.

  • CLK подключаем к D3
  • DIO к D4.


Сначала простенький скетч для проверки подключения и работы дисплея.
Для работы с TM1637 вам надо установить вот эту библиотеку. Её можно установить прямо из Arduino IDE, из Менеджера библиотек.
Если вы видите такой экран, то значит всё работает. Правда получилась не очень хорошая картинка, но думаю всё и так понятно.  
Теперь быстро объясню, что и за что отвечает.
Создаём 4 переменных, куда потом будем складывать цифры и выводить на экран.
Массив для каждого знака. Установка яркости. Вывод каждой цифры на своё место. Более подробно я объясню в следующем примере.

Теперь давайте посмотрим скетч вывода часов. А он, кстати, такой маленький, что уместился на экран. Всего 40 строчек кода.
Как я говорил, про подключение к NTP серверу я рассказывать не буду.
Это библиотеки для подключения к NTP и для работы TM1637.

  • Дальше идёт подключение дисплея.
  • Настройки WIFI сети.
  • Подключение к NTP и установка таймзоны.
  • Соединение с сетью и получение IP адреса.

Вот, а здесь остановимся подробнее.

Здесь можно задать яркость дисплея. Это может пригодиться для регулировки свечения днём и ночью. У меня было такое видео, где я менял яркость, от освещения. Там был установлен фоторезистор, который измерял степень освещённости. А так как это были часы на RGB ленте, то при полной яркости спать было невозможно. Как днём.
Вот некоторые видео на канале, которые могут быть вам интересны.
Здесь видео с подробным описанием, и  подключение LCD 1602 и 2004, а так же модуля TM1602. И разные варианты часов собранных на модуле часов DS3231.

Вот эта строковая переменная нужна для добавления 0 если минуты меньше 10.
Здесь получаем часы и минуты и присваиваем значения переменным.
Если минуты меньше 10, то добавляем вначале 0.
Объединяем часы и минуты в одну строчку. И выводим на дисплей.
Это из строки делаем цифры, добавляем двоеточие, и добавляем ноль спереди если часы меньше 10.
Кстати, вы можете отключить этот ноль. Тогда у вас не будет нуля спереди.
Эти 3 строчки отвечают за мигания точек. Если не хотите, чтобы мигало, просто удалите их.

А если хотите подробнее узнать про модуль TM1637? То очень советую посмотреть это видео, и зайти на мой сайт. Там рассказано про разные функции библиотеки этого модуля.  Ссылка будет в описании и в первом комментарии.
Это лишь часть возможностей этого модуля. Но их гораздо больше. Здесь и различные мигания, бегущие строка, плавное изменение яркости. Различные эффекты замены. И всё это реализовано в библиотеке. Вам не нужно ничего придумывать, а надо всего лишь вставить нужную строку или функцию, а всё остальное за вас сделает библиотека.

Теперь давайте подключим LCD1602. Здесь уже побольше знакомест, и мы сможем вывести и дату и день недели.
Для этого нам надо установить библиотеку для работы с дисплеем. Я использую дисплей с I2C. Это намного удобнее, и легче в подключении. Тогда нам нужна будет библиотека с поддержкой I2C. Советую посмотреть вот это видео. Там подробно рассказано про дисплеи и способы их подключения.

Очень часто бывает, что дисплей не определяется. Это всё из-за того что может быть установлен разный адрес, и для того чтобы его узнать надо запустить сканер I2C соединения. Там будет указан реальный адрес дисплея на шине I2C. и его потом надо будет вставить в скетч.
У меня вот такой адрес. А вот так я указал его в скетче.

Рассмотрим простой пример вывода на дисплей.
Подключаем библиотеку. Указываем адрес и размерность дисплея. К каким контактам подключен на ESP.
Инициализируем и включаем подсветку. На всякий случай очищаем экран, а то вдруг будет какой мусор.
В первой строке выводим пример, а во второй, по центру ESP8266. Так как мы разместили весь код в setup, то он будет выведен всего 1 раз.

Теперь давайте выведем на дисплей часы.
Эту часть я пропускаю, так как уже много раз рассказывал что это такое. Остановимся на выводе дней и часов.

Весь этот код отвечает за получение значений даты и времени с сервера NTP. За это отвечает библиотека NTP. Кто смотрел предыдущий пример – это уже знает, а кто не смотрел не поймёт.
Присваиваем переменным значения даты. То есть день, месяц и год.
А время будем выводить так как предлагает сама библиотека. Если вы хотите вывести как-нибудь по другому, то вам надо получить отдельно часы и минуты, и вывести их как хотите сами.

Как выводить на дисплей, мы рассмотрели в прошлом примере.
По центру первой строки выводим дату, а по центру второй строки выводим время.
Согласитесь – это совсем не сложно.

Я ещё хотел добавить часы к вот этому примеру, но решил показать это в отдельном видео. И так видео получилось насыщенным. Жалко что у меня закончились дисплеи nokia-5110, а то я бы и его подключил. Я много с ним работал, и он мне нравится. Если не знаете, что это за экранчик, то посмотрите эти видео.

Если вам интересна эта тема, то я могу снять ещё много видео про получение и вывод даты и времени и не только про это.
Объём вашего интереса, я буду оценивать по количеству лайков и комментариев. Чем их будет больше, тем быстрее выйдет новое видео.
Ну, а если вам нравятся мои уроки, то ставьте лайк и делитесь моими видео, с другими. Это очень поможет мне в продвижении канала, а меня будет стимулировать выпускать уроки чаще и интереснее.
Вы видите ссылки на видео, которые, я думаю будут вам интересны. Перейдя на любое из этих видео вы узнаете что-то новое, а ещё поможете мне. Ведь любой ваш просмотр - это знак YOUTUBE, что это кому-то интересно и что его надо показывать чаще.
Спасибо.
А пока на этом всё.