Здравствуйте, уважаемые читатели! В прошлых статьях я рассказывал, как работать с семисегментным светодиодным индикатором на 4 цифры. Мы разбирали варианты управления светодиодного индикатора с помощью сдвигового регистра и без. Все ссылки будут размещены в конце этой статьи. В данной статье хочу рассказать о семисегментном индикаторе на базе микросхемы TM1637, который позволяет существенно упростить вывод цифр, соответствующих измеренной температуре, влажности, давлению, а так же текущего времени на светодиодный дисплей.
У данного индикатора первые две цифры отделены от вторых двух двоеточием. Есть более сложные варианты, которые поддерживают вывод десятичной точки между разрядами.
Модуль работает с микроконтроллером по двухпроводному интерфейсу i2c. Благодаря чему, для его полноценной работы нам потребуется задействовать всего 2 цифровых пина Arduino UNO, которые соединяются с пинами CLK и DIO дисплея. Еще два контакта модуля, отмеченные на плате, как VCC и GND служат для подключения питающего напряжения и земли. Дисплей TM1637 может работать от напряжения 3,3 В и 5 В.
Схема подключения TM1637 к Ардуино
Схема подключения TM1637 к Ардуино на примере Arduino UNO, выглядит следующим образом:
Пин 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
И скачиваем библиотеку на компьютер.
Далее добавляем скачанную библиотеку в Arduino IDE
После этого, в примерах для библиотеки, открываем скетч 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.setSegments (data) – позволяет включить только заранее заданные сегменты светодиодного индикатора, таким образом, можно создавать собственные символы. В качестве аргумента data передается массив из 4-х элементов, к каждом элементе представлены задействованные сегменты. Ниже мы создадим таким образом новые символы.
Загружаем скетч в Ардуино, и видим как последовательно выводятся все тестовые примеры. В завершении, выводится надпись dOnE (done), символизирующая окончание работы тестового скетча.
Пример вывода температуры на светодиодный дисплей 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 сегменты соответствуют буквам точно в таком же порядке, как у обычного семисегментного светодиодного индикатора.
Таким образом, мы получим следующий массив, где первые два элемента представим черточками (они все равно будут заменены цифрами), а третий и четвертый символ будут знаком градуса и буквой "C". В результате получаем вот такой скетч (ссылка на сам скетч ниже):
Загружаем скетч в Ардуно и видим следующий результат:
Если для функции display.showNumberDec(9, false, 2, 0) изменить значение второго аргумента с false на true, то число 9 будет выводиться с предварительным нулем, как «09».
Ссылка на библиотеку -https://github.com/avishorp/TM1637
Ссылка на скетч – https://yadi.sk/d/wpXqDiZpKWAlMA
_________________________________________________________
Спасибо, что дочитали до конца! Если статья понравилась, нажмите, пожалуйста, соответствующую кнопку. Если интересна тематика электроники и различных электронных самоделок, подписывайтесь на канал. До встречи в новых статьях!