TM1637: подключение к ESP32 и Arduino

Четырёхразрядный индикатор

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

Как работает

Микросхема TM1637 управляет четырьмя семисегментными разрядами и двоеточием. Протокол двухпроводной — CLK и DIO, — похож на I2C, но им не является: адреса нет, и на общую шину I2C модуль не вешают.

Библиотека TM1637Display: display.setBrightness(0..7), showNumberDec(число), showNumberDecEx(1234, 0b01000000, true) — число с двоеточием и ведущими нулями, то есть часы.

Выводы

ВыводНазначение
CLKтактовый сигнал
DIOданные
VCCпитание
GNDобщий провод

Подключение к ESP32

TM1637ESP32
CLKGPIO18
DIOGPIO19
VCC3V3
GNDGND

Схема из примера «TM1637: четыре разряда».

TM1637: четыре разряда

Открыть пример целиком
Код скетча
#include <TM1637Display.h>

TM1637Display display(18, 19);   // такт, данные

void setup() {
  // Яркость и включение — одна команда: нулевая яркость не гасит
  // индикатор, для этого есть отдельный довод.
  display.setBrightness(4);
  display.clear();
}

void loop() {
  // Число целиком: библиотека сама разложит его по разрядам.
  display.showNumberDec(42);
  delay(800);

  // С ведущими нулями — второй довод. Для часов нужен именно он,
  // иначе «09» показывается как « 9».
  display.showNumberDec(42, true);
  delay(800);

  // Отрицательные помещаются, пока хватает разрядов под знак.
  display.showNumberDec(-99);
  delay(800);

  // Больше 9999 не влезет: библиотека покажет младшие разряды, а не
  // ошибку. Проверять диапазон — дело скетча.
  display.showNumberDec(12345);
  delay(800);
}

Подключение к Arduino Uno

TM1637Arduino Uno
CLKD4
DIOD5
VCC5V
GNDGND

Схема из примера «Arduino Uno: индикатор TM1637 на двух выводах».

Arduino Uno: индикатор TM1637 на двух выводах

Открыть пример целиком
Код скетча
#include <TM1637Display.h>

// Индикатор на выводах 4 и 5. Любых: протокол похож на I2C — те же
// старт, стоп и подтверждение, — но адреса в нём нет, и разряды идут
// младшим вперёд. Поэтому на аппаратный контроллер I2C микросхему
// повесить нельзя, и библиотека тактирует выводы вручную.
//
// Отсюда практическое следствие: A4 и A5 остаются свободными для
// настоящей шины, и часы с датчиком собираются без конфликтов.

TM1637Display display(4, 5);   // такт, данные

void setup() {
  // Яркость и включение — одна команда. Нулевая яркость индикатор не
  // гасит, для этого есть отдельный довод.
  display.setBrightness(4);
  display.clear();
}

void loop() {
  unsigned long s = millis() / 1000;

  // Минуты и секунды в четырёх разрядах: часы так и делают.
  int shown = (s / 60) % 100 * 100 + s % 60;

  // Второй довод — ведущие нули. Для часов нужен именно он, иначе
  // «09» показывается как « 9». Третий — двоеточие посередине.
  display.showNumberDecEx(shown, 0b01000000, true);
  delay(200);
}

В железе

Выводы CLK и DIO — любые цифровые. На модуле стоят подтягивающие резисторы, отдельные не нужны.

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

Другие детали