Четырёхразрядный LED-дисплей на драйвере TM1637

Семисегментный индикатор на TM1637 занимает всего два цифровых вывода Arduino. Характеристики, подключение и пример часов с DS3231.
Зачем нужен драйвер TM1637
Семисегментные светодиодные индикаторы в сборках по 4 или 8 разрядов остаются популярным способом показать время, показания датчика и другие числа. Раньше такая сборка занимала у Arduino очень много выводов. Модули на микросхеме TM1637 решают эту проблему: кроме питания и земли нужны только два цифровых контакта, а динамическую индикацию драйвер полностью берёт на себя.

На плате установлены четыре семисегментных индикатора с общим анодом и разделительные точки для отображения времени. Логические входы совместимы с уровнями 5 и 3.3 В, яркость свечения настраивается программно.
Основные характеристики
| Напряжение питания | 3.3–5.5 В |
| Ток потребления | 0.2–80 мА |
| Число разрядов | 4, с десятичной точкой в каждом |
| Размер индикаторов | 0.36 или 0.56 дюйма |
| Разделительные точки | есть |
| Интерфейс | двухпроводной последовательный |
| Цвет свечения | красный, синий, жёлтый, белый, зелёный |
| Яркость | 7 уровней |
Подключение и библиотеки
Для обмена данными служат два вывода модуля: DIO передаёт данные, CLK задаёт синхронизацию. Их можно соединить с любыми двумя цифровыми контактами Arduino.

Для дисплея написано несколько библиотек, среди них TM1637, DigitalTube и GyverTM1637. Последняя умеет выводить цифры, буквы, время и бегущую строку, а также содержит визуальные эффекты. Познакомиться с её возможностями удобно на встроенном примере GyverTm1637_Demo, который открывается из меню примеров Arduino IDE.

Пример: часы с календарём
Для проекта, показывающего время и дату, понадобятся Arduino Nano, макетная плата, дисплей TM1637, модуль часов реального времени DS3231 и провода.

В скетче подключаются GyverTM1637.h, Wire.h, DS1307RTC.h и TimeLib.h, дисплей описан выводами CLK на пине 4 и DIO на пине 5, яркость установлена командой disp.brightness(7). Каждые полсекунды программа считывает время вызовом RTC.read(tm) и переключает состояние двоеточия. Информация сменяется по кругу:
- секунды в двух правых разрядах, двоеточие мигает;
- часы и минуты с мигающим двоеточием;
- день и месяц;
- год.
Полный цикл занимает около 15 секунд, после чего показ начинается заново. Отдельные цифры выводятся функцией disp.display(разряд, значение).
Если дисплей ничего не показывает
При отсутствии изображения проверяют два момента: правильность подключения модуля к плате и корректность загруженного скетча.