Содержание
Обзор светодиодного индикаторного дисплея на базе драйвера TM1637
Одним из широко используемых устройств для отображения информации в любительских проектах Arduino являются 7-сегментные светодиодные индикаторы, которые используют в сборках из 4 или 8 штук. На данные дисплеи уже можно выводить какие-то осмысленные данные, например текущее время или курс валюты. Но еще совсем недавно это требовало использования очень большого количества контактов Arduino. С появлением дисплеев на светодиодных индикаторов на микросхеме TM1637 (рис. 1) для подключения используется всего 2 цифровых контакта Arduino, плюс питание и земля. TM1637 полностью берет на себя организацию динамической индикации индикаторов.
Рисунок 1.
Данный дисплей содержит четыре семисегментных индикатора с общим анодом, а также имеет разделительные точки для вывода времени. Логические уровни толерантны как к уровням напряжения 5 и 3.3 В. Сегменты бывают красного, синего, желтого, белого и зеленого цвета. Есть возможность установки уровня яркости сегментов.
Технические характеристики дисплея TM1637
- Напряжение питания – 3.3 – 5.5 В;
- Ток потребления – 0.2 – 80 мА;
- Количество сегментов – 4 с десятичной точкой в каждом разряде;
- Размер индикаторов – 0.36" или 0.56";
- Наличие разделительных точек;
- Интерфейс – двухпроводной последовательный;
- Цвета – красный, синий, желтый, белый, зеленый;
- Регулируемая яркость – 7 уровней.
Подключение 4-Digit LED дисплея к плате Arduino
Для подключения дисплея к микроконтороллеру используют два контакта дисплея:
- DIO –отправка данных;
- CLK – синхронизация.
которые подключаем к двум любым цифровым контактам Arduino (рис. 2).
Рис. 2.
Для работы с данным дисплеем существует несколько библиотек, например TM1637, DigitalTube, GyverTm1637. Установим в Arduino IDE библиотеку, позволяющую выводить цифры, буквы, время, бегущую строку и имеющую интересные визуальные эффекты. Посмотреть возможности библиотеки можно, запустив пример GyverTm1637_Demo (Примеры → GyverTm1637 → GyverTm1637_Demo).
Рис. 3.
Пример использования светодиодного LED дисплея vTM1637
Создадим проект отображения на дисплее TM1637 времени, текущей даты, года, дня недели с различными эффектами.
Для проекта нам понадобятся:
- Плата Arduino Nano – 1 шт;
- Плата – 1 шт;
- Дисплей TM1637 – 1 шт;
- RTC DS3231 – 1 шт;
- Провода.
Схема соединений нашего проекта на рис. 4.
Рис. 4.
Порядок показа даты и времени, получаемых с модуля RTC DS3231:
- _ _ : s s – показ секунд с миганием двоеточия;
- h h : m m – часы и минуты с миганием двоеточия;
- d d m m – день месяц;
- y e a r – год.
Загружаем на плату Arduino скетч из листинга 1.
Листинг 1.
// подключение библиотек #include "GyverTM1637.h" #include <Wire.h> #include <DS1307RTC.h> #include <Time.h> #include <TimeLib.h> // создание объекта #define CLK 4 #define DIO 5 GyverTM1637 disp(CLK, DIO); // переменная даты-времени tmElements_t tm; // служебные переменные unsigned long millisp=0; unsigned long millist=0; // двоеточие boolean flagpoint=true; void setup() { // очистить дисплей disp.clear(); // установить яркость disp.brightness(7); } void loop() { if(millis()-millisp>=500) { // разделительные точки flagpoint=!flagpoint; millisp=millis(); // получить время RTC.read(tm); // показ инфо if(millis()-millist<=5000) { // секунды disp.point(flagpoint); disp.display(0, 10); disp.display(1, 10); disp.display(2, tm.Second/10); disp.display(3, tm.Second%10); } else if(millis()-millist<5500) { else if(millis()-millist<=9000) { // часы-минуты disp.point(flagpoint); disp.display(0, tm.Hour/10); disp.display(1, tm.Hour%10); disp.display(2, tm.Minute/10); disp.display(3, tm.Minute%10); } else if(millis()-millist<=12000) { // день-месяц disp.point(false); disp.display(0, tm.Day/10); disp.display(1, tm.Day%10); disp.display(2, tm.Month/10); disp.display(3, tm.Month%10); } else if(millis()-millist<=15000) { // год disp.point(false); int year1=tmYearToCalendar(tm.Year); disp.display(0, year1/1000); disp.display(1, (year1%1000)/100); disp.display(2, ((year1%1000)%100)/10); disp.display(3, ((year1%1000)%100)%10); } else { millist=millis(); } } }
И проверяем работу часов (рис. 5,6).
Рис. 5,6.
Часто задаваемые вопросы
1. Не выводится изображение на дисплей
- Проверьте правильность подключения модуля к плате Arduino.
- Проверьте правильность написания скетча.