Библиотека TM1637Display
Четырёхразрядный семисегментный индикатор с двоеточием на 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.