Библиотека для вывода информации на 7-секционный дисплей с контроллером на базе драйвера TM1637.
Исходный код библиотеки доступен на github: TM1637.
Инструкцию по подключению дисплея и примеры работы можно прочитать здесь.
Конструктор:
//! Инициализация объекта TM1637Display с заданием номеров пинов и времени задержки при передаче бит данных
//!
//! @param pinClk - Номер цифрового пина, подключенного к контакту синхронизации модуля
//! @param pinDIO - Номер цифрового пина, подключенного к контакту передачи данных
//! @param bitDelay - Задержка в микросекундах между передачей битов по последовательной шине, подключенной к дисплею
TM1637Display(uint8_t pinClk, uint8_t pinDIO, unsigned int bitDelay = DEFAULT_BIT_DELAY);
Установка яркости дисплея:
//! Яркость изменится только после команды на передачу новых данных на дисплей
//!
//! @param brightness Яркость задается от 0 (минимальная) до 7 (максимальная)
//! @param on Включает или выключает дисплей
void setBrightness(uint8_t brightness, bool on = true);
Вывод произвольной информации на дисплей:
//! Функция получает необработанные значения сегментов в качестве входных данных и отображает их.
//! Сегменты передаются в виде байтового массива, каждый байт соответствует одной цифре. Внутри каждого байта
//! бит 0 является сегментом A, бит 1 является сегментом B и т. д.
//! Функция может вывести значения на весь дисплей или на любую его часть. Номер первой цифры, значение которой нужно установить,
//! передается через @ref pos, а аргумент @ref length обозначает количество цифр, которые нужно вывести на дисплей.
//! Другие цифры изменены не будут.
//!
//! @param segments Массив размера @ref length, содержащий "сырые" данные
//! @param length Количество цифр для вывода
//! @param pos Позиция первой выводимой цифры (0 - крайняя левая, 3 - крайняя правая)
void setSegments(const uint8_t segments[], uint8_t length = 4, uint8_t pos = 0);
Очистка дисплея:
void clear();
Вывод десятичного числа:
//! Выводит переданный аргумент как десятичное число.
//!
//! @param num Число для вывода
//! @param leading_zero Если передано true, то будут отображены начальные нули. Если передано false, то начальные разряды будут погашены.
//! ВНИМАНИЕ: не работает с отрицательными числами.
//! @param length Длина выводимого числа. Пользователь должен убедиться, что передано число нужной длины (например, если передано 2,
//! в качестве аргумента @ref num может быть число от 0 до 99)
//! @param pos Позиция самой значимой цифры (0 - крайняя левая, 3 - крайняя правая)
void showNumberDec(int num, bool leading_zero = false, uint8_t length = 4, uint8_t pos = 0);
Вывод десятичного числа с точкой/двоеточием:
//! Выводит переданный аргумент как десятичное число. Точки и двоеточия контролируются отдельно.
//!
//! @param num Число для вывода
//! @param dots Показать точки/двоеточия. Аргумент является битовой маской, где каждый бит соответствует точке между цифрами
//! (или знаком двоеточия, в зависимости от конкретного дисплея).
//! Для дисплеев с точками между каждой цифрой:
//! * 0.000 (0b10000000)
//! * 00.00 (0b01000000)
//! * 000.0 (0b00100000)
//! * 0.0.0.0 (0b11100000)
//! Для дисплеев только с двоеточием:
//! * 00:00 (0b01000000)
//! Для дисплеев с точками и двоеточием:
//! * 0.0:0.0 (0b11100000)
//! @param leading_zero Если передано true, то будут отображены начальные нули. Если передано false, то начальные разряды будут пустыми.
//! ВНИМАНИЕ: не работает с отрицательными числами.
//! @param length Длина выводимого числа. Пользователь должен убедиться, что передано число нужной длины (например, если передано 2,
//! в качестве аргумента @ref num может быть число от 0 до 99)
//! @param pos Позиция самой значимой цифры (0 - крайняя левая, 3 - крайняя правая)
void showNumberDecEx(int num, uint8_t dots = 0, bool leading_zero = false, uint8_t length = 4, uint8_t pos = 0);
Вывод шестнадцатеричного числа с точкой/двоеточием:
//! Выводит переданный аргумент как шестнадцатеричное число. Точки и двоеточия контролируются отдельно.
//!
//! @param num Число для вывода
//! @param dots Показать точки/двоеточия. Аргумент является битовой маской, где каждый бит соответствует точке между цифрами
//! (или знаком двоеточия, в зависимости от конкретного дисплея).
//! Для дисплеев с точками между каждой цифрой:
//! * 0.000 (0b10000000)
//! * 00.00 (0b01000000)
//! * 000.0 (0b00100000)
//! * 0.0.0.0 (0b11100000)
//! Для дисплеев только с двоеточием:
//! * 00:00 (0b01000000)
//! Для дисплеев с точками и двоеточием:
//! * 0.0:0.0 (0b11100000)
//! @param leading_zero Если передано true, то будут отображены начальные нули. Если передано false, то начальные разряды будут пустыми.
//! @param length Длина выводимого числа. Пользователь должен убедиться, что передано число нужной длины (например, если передано 2,
//! в качестве аргумента @ref num может быть число от 0 до 99)
//! @param pos Позиция самой значимой цифры (0 - крайняя левая, 3 - крайняя правая)
void showNumberHexEx(uint16_t num, uint8_t dots = 0, bool leading_zero = false, uint8_t length = 4, uint8_t pos = 0);
Перевод цифры в 7-сегментный код:
//! Метод принимает число от 0 до 15 и преобразует его в
//! код, необходимый для отображения числа на 7-сегментном дисплее.
//! Числа между 10-15 преобразуются в шестнадцатеричные цифры (A-F)
//!
//! @param digit Число от 0 до 15
//! @return Код, представляющий 7-сегментное изображение цифры (LSB - сегмент A;
// бит 6 - сегмент G; бит 7 - всегда ноль)
uint8_t encodeDigit(uint8_t digit);