Найти тему
Электроника и жизнь

Дисплей TM1637. Скетч, библиотека, схема подключения к Ардуино

Оглавление

Здравствуйте, уважаемые читатели! В прошлых статьях я рассказывал, как работать с семисегментным светодиодным индикатором на 4 цифры. Мы разбирали варианты управления светодиодного индикатора с помощью сдвигового регистра и без. Все ссылки будут размещены в конце этой статьи. В данной статье хочу рассказать о семисегментном индикаторе на базе микросхемы TM1637, который позволяет существенно упростить вывод цифр, соответствующих измеренной температуре, влажности, давлению, а так же текущего времени на светодиодный дисплей.

Дисплей TM1637
Дисплей TM1637

У данного индикатора первые две цифры отделены от вторых двух двоеточием. Есть более сложные варианты, которые поддерживают вывод десятичной точки между разрядами.

Дисплей TM1637 с десятичными точками
Дисплей TM1637 с десятичными точками

Модуль работает с микроконтроллером по двухпроводному интерфейсу i2c. Благодаря чему, для его полноценной работы нам потребуется задействовать всего 2 цифровых пина Arduino UNO, которые соединяются с пинами CLK и DIO дисплея. Еще два контакта модуля, отмеченные на плате, как VCC и GND служат для подключения питающего напряжения и земли. Дисплей TM1637 может работать от напряжения 3,3 В и 5 В.

Схема подключения TM1637 к Ардуино

Схема подключения TM1637 к Ардуино на примере Arduino UNO, выглядит следующим образом:

Схема подключения дисплея TM1637 к Ардуино
Схема подключения дисплея TM1637 к Ардуино

Пин CLK подключаем ко 2 пину, а пин DIO к 3 пину Arduino UNO. Можно использовать и другие цифровые пины. Пины VCC и GND подключаем к пинам 5V и GND Arduino UNO, соответственно. Так же модуль можно запитать от внешнего источника питания, напряжением 3,3 – 5,5 В.

Библиотека для работы дисплея TM1637

Перейдем к программной части работы с модулем. Вначале необходимо установить библиотеку для работы с TM1637. Я использую библиотеку TM1637Display.h. Переходим по ссылке https://github.com/avishorp/TM1637

И скачиваем библиотеку на компьютер.

Загрузка библиотеки TM1637
Загрузка библиотеки TM1637

Далее добавляем скачанную библиотеку в Arduino IDE

 Добавление библиотеки TM1637
Добавление библиотеки TM1637

После этого, в примерах для библиотеки, открываем скетч TM1637test.

Выбор  скетча TM1637test
Выбор скетча TM1637test

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

Примеры в скетче TM1637test
Примеры в скетче TM1637test

Разберем основные функции:

display.clear() – очищает дисплей.

display.setBrightness() – задает яркость дисплея от 0 до 7. 0 – минимальная яркость, 7 – максимальная яркость.

display.showNumberDec(n, flag, q, pos) – позволяет выводить числа на дисплей в определенную позицию. Обязательным является только первый агрумент.

n – выводимое число.

flag – true – дополняет выводимое число впереди идущими нулями. false – не дополняет нули. Значение умолчанию false.

q – сколько символов займет выводимое число.

pos – секция светодиодного индикатора, куда выводится число. От 0 до 3 слева направо.

Примеры функции display.showNumberDec()
Примеры функции display.showNumberDec()

display.setSegments (data) – позволяет включить только заранее заданные сегменты светодиодного индикатора, таким образом, можно создавать собственные символы. В качестве аргумента data передается массив из 4-х элементов, к каждом элементе представлены задействованные сегменты. Ниже мы создадим таким образом новые символы.

Здесь задается массив используемых сегментов для формирования символов
Здесь задается массив используемых сегментов для формирования символов

Загружаем скетч в Ардуино, и видим как последовательно выводятся все тестовые примеры. В завершении, выводится надпись dOnE (done), символизирующая окончание работы тестового скетча.

Результат работы демонстрационного скетча TM1637test
Результат работы демонстрационного скетча TM1637test

Пример вывода температуры на светодиодный дисплей TM1637

Теперь перейдем к выводу температуры на светодиодный дисплей. Я не буду здесь останавливаться на способах получения температуры. Ее можно получить различными методами, о некоторых из них у меня есть отдельные статьи:

1. С помощью термистора (https://zen.yandex.ru/media/id/5ebd73d6fce1527a111c230d/chto-takoe-termistor-podkliuchenie-termistora-k-arduino-5f343d40f8858d597884526c).

2. С помощью датчика температуры DS18B20 (https://zen.yandex.ru/media/id/5ebd73d6fce1527a111c230d/vyvod-temperatury-s-datchika-ds18b20-na-4h-segmentnyi-svetodiodnyi-indikator-s-pomosciu-arduino-5fecce9ffe4e686f6af60e19).

3. С помощью датчиков температуры и влажности DHT11, DHT22, AM2320 и многих других.

4. Встроенный датчик температуры устройства и т.д.

Предположим, мы получили некоторое значение температуры и теперь нам нужно вывести его на дисплей.

Создадим два новых символа, которые будут обозначать градусы Цельсия. Для этого создадим новый массив и укажем в нем только те сегменты, которые мы задействуем при создании значка градуса и буквы "C".

У дисплея TM1637 сегменты соответствуют буквам точно в таком же порядке, как у обычного семисегментного светодиодного индикатора.

Это пример  обозначения сегментов буквами на обычном семисегментном светодиодном индикаторе.  У модуля TM1637 они идут в том же порядке.
Это пример обозначения сегментов буквами на обычном семисегментном светодиодном индикаторе. У модуля TM1637 они идут в том же порядке.

Таким образом, мы получим следующий массив, где первые два элемента представим черточками (они все равно будут заменены цифрами), а третий и четвертый символ будут знаком градуса и буквой "C". В результате получаем вот такой скетч (ссылка на сам скетч ниже):

Скетч демонстрирующий вывод температуры на дисплей TM1637
Скетч демонстрирующий вывод температуры на дисплей TM1637

Загружаем скетч в Ардуно и видим следующий результат:

Результат работы скетча
Результат работы скетча

Если для функции display.showNumberDec(9, false, 2, 0) изменить значение второго аргумента с false на true, то число 9 будет выводиться с предварительным нулем, как «09».

Ссылка на библиотеку -https://github.com/avishorp/TM1637

Ссылка на скетч – https://yadi.sk/d/wpXqDiZpKWAlMA

_________________________________________________________

Спасибо, что дочитали до конца! Если статья понравилась, нажмите, пожалуйста, соответствующую кнопку. Если интересна тематика электроники и различных электронных самоделок, подписывайтесь на канал. До встречи в новых статьях!

Другие публикации по теме: