ELECTRONICS

Индикатор TM1637 и Arduino: подключение по двум проводам, библиотека, часы и счётчик

Светодиодные индикаторыСкетч проверен компиляцией

TM1637 — четыре семисегментных разряда с двоеточием на плате, которая просит от Arduino всего два сигнальных провода. Драйвер держит развёртку сам, умеет восемь ступеней яркости и показывает цифры, минус и несколько букв. Часы, счётчик, температура, обратный отсчёт — его типичная работа.

Интерфейс похож на I2C, но им не является: адресов нет, на шину I2C модуль не вешают, а CLK и DIO — любые два цифровых вывода.

Схема подключения

U13642BS-1 3404-Digit Display V1.2J1
Наведите на провод или нажмите на него — расскажу, зачем он нужен.

Распиновка

ПроводКуда и зачем
CLKТакт, любой цифровой вывод.
DIOДанные, любой цифровой вывод.
VCC3,3–5 В.
GNDЗемля.

Характеристики

Разрядов
4, с двоеточием посередине
Яркость
8 ступеней
Интерфейс
двухпроводный, свой протокол
Питание
3,3–5,5 В
Ток
до 80 мА
Высота цифр
0,36 или 0,56 дюйма, по модулю

Что умеет показать

Цифры 0–9 в любом разряде, минус, буквы A–F шестнадцатеричного набора и всё, что можно составить из семи сегментов: буквы C, E, F, H, L, P, U и подобные. Каждый сегмент задаётся битом, поэтому в библиотеке есть setSegments для произвольного рисунка.

Двоеточие — отдельный бит в вызове showNumberDecEx: с ним модуль показывает время «12:34», мигать двоеточием раз в секунду — одна строка в loop.

Библиотека

TM1637 (Avishay Orpaz)В менеджере — «TM1637» от avishorp, заголовок TM1637Display.h. Не путать с TM1637 от других авторов: интерфейсы разные.

Готовый скетч

#include <TM1637Display.h>

const int CLK = 2;
const int DIO = 3;
TM1637Display display(CLK, DIO);

void setup() {
  display.setBrightness(4);          // 0..7
  display.clear();
}

void loop() {
  // Обратный отсчёт секунд с двоеточием, как на часах: 01:00 → 00:00
  for (int s = 60; s >= 0; s--) {
    int minutes = s / 60;
    int seconds = s % 60;
    // 0b01000000 — включить двоеточие; true — показывать ведущие нули
    display.showNumberDecEx(minutes * 100 + seconds, 0b01000000, true);
    delay(1000);
  }
  delay(2000);
}

Скетч собирается arduino-cli под Arduino UNO

showNumberDec без Ex выводит число без двоеточия и без ведущих нулей — для счётчика и температуры.

Частые ошибки

Ничего не показывает

Яркость не задана: после включения драйвер в выключенном состоянии, setBrightness обязателен. Или перепутаны CLK и DIO.

Показывает мусор или не те цифры

Стоит другая библиотека с таким же названием. Нужна от avishorp с заголовком TM1637Display.h.

Двоеточие не загорается

У части модулей на месте двоеточия — точка после каждого разряда, и бит 0b01000000 включает точку у второго. Это другая версия платы, а не ошибка.

Мерцает при работе с другими устройствами

Библиотека блокирует прерывания на время передачи. Если в проекте серво или Serial на высокой скорости — обновляйте дисплей реже, раз в секунду.

Что понадобится