ELECTRONICS

Библиотека TM1637Display

менеджер: TM1637Avishay Orpazверсия 1.2.0

Четырёхразрядный семисегментный индикатор с двоеточием на TM1637: числа, яркость, свои символы. Два провода.

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

Одноимённых библиотек в менеджере несколько; здесь описана Avishay Orpaz с классом TM1637Display — самая распространённая.

Установка и подключение

В менеджере библиотек ищите TM1637 автора Avishay Orpaz. Если менеджер предложит поставить зависимости — соглашайтесь. Как открыть менеджер и что делать, если библиотека не находится, — в общей статье про библиотеки.

#include <TM1637Display.h>

Создание объекта — обычно до setup():

TM1637Display display(2, 3);     // CLK, DIO
display.setBrightness(5);         // в setup(): 0–7

Методы

Только то, что нужно в обычном скетче. Сигнатуры сверены с версией 1.2.0.

setBrightness(uint8_t level, bool on = true)
Яркость 0–7; on = false гасит индикатор, не теряя данных.
showNumberDec(int num, bool leadingZeros, uint8_t length, uint8_t pos)
Показать число −999…9999. leadingZeros — нули впереди; length и pos — сколько разрядов и с какого.
showNumberDecEx(int num, uint8_t dots, bool leadingZeros, ...)
То же с точками/двоеточием: dots = 0b01000000 включает двоеточие между второй и третьей цифрой.
showNumberHexEx(uint16_t num, uint8_t dots, ...)
Число в шестнадцатеричном виде.
setSegments(const uint8_t segs[], uint8_t length, uint8_t pos)
Зажечь сегменты напрямую: по байту на разряд, биты A–G. Так выводят буквы и прочерки.
encodeDigit(uint8_t digit)
Байт сегментов для цифры 0–15 — для сборки своих массивов.
clear()
Погасить все разряды.

Пример

#include <TM1637Display.h>

TM1637Display display(2, 3);   // CLK, DIO

void setup() {
  display.setBrightness(4);
}

void loop() {
  // часы из millis(): минуты и секунды, двоеточие мигает раз в секунду
  unsigned long s = millis() / 1000;
  int mm = (s / 60) % 100;
  int ss = s % 60;
  uint8_t colon = (millis() % 1000 < 500) ? 0b01000000 : 0;
  display.showNumberDecEx(mm * 100 + ss, colon, true);
  delay(50);
}

Двоеточие — это бит в параметре dots второго разряда, поэтому число собирают как ММСС и включают 0b01000000.

На чём попадаются

Не компилируется: нет TM1637Display

Установлена другая библиотека TM1637 (например, Grove). Ищите в менеджере автора Avishay Orpaz.

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

Слишком длинные провода или плохой контакт на CLK/DIO. Модуль питается от 5 В; на 3,3 В работает, но тусклее.

Отрицательные числа не помещаются

Минус занимает разряд: диапазон −999…9999.

Где используется на сайте

Что дальше