Каталог
|
Доработка библиотеки TM-1637 для 7-ми сегментного екрана2019-01-02 Все статьи →В этой статье вещь идет об улучшении библиотеки для экрана тм-1637. Библиотека модифицирована и улучшена для удобства написания скетча.
// нумерация портов слева направо! disp.display(port, num); // вывести цифру num (0-9) в порт port (0-3) disp.display(ARRAY); // вывести ARRAY, где ARRAY - массив из 4х цифр ( byte ARRAY[4] = {0, 1, 2, 3}; ) disp.displayByte(port, Byte); // вывести символ Byte в порт port (0-3) (Byte вида 0x7d) disp.displayByte(ARRAY_BYTE); // ARRAY_BYTE - массив кодов ( 0x7d, 0x7d, 0x7d, 0x7d ) disp.displayByte(Byte1, Byte2, Byte3, Byte4); // вывести побайтово // для вывода некоторых букв доступен вывод вида _A, _b, _h. Полный список смотри в TM1637.h disp.displayInt(value); // вывести 1-4 значное число disp.displayIntZero(value); // вывести 1-4 значное число с нулями СЛЕВА // бегущая строка символов из массива arrayBytes, число символов sizeof(arrayBytes), интервал delay_time в миллисекундах disp.runningString(arrayBytes, sizeof(arrayBytes), delay_time); disp.point(state); // включить/выключить двоеточие (1 и 0 соответственно) disp.clearDisplay(); // очистить дисплей disp.set(7); // яркость, 0 - 7 (минимум - максимум)
В файле TM1637.h есть список символов, которые были добавлены для удобного вывода, чтобы их вывести, нужно использовать один из вариантов с функцией displayByte(). Следующий код выведет символ a в самый левый порт дисплея
disp.displayByte(0, _a);
КАК ВЫВЕСТИ СТРОЧКУ? Давайте выведем строчку HELL. Для вывода слов удобнее использовать следующий вариант:
disp.displayByte(_H, _E, _L, _L); // вывести HELL, используя буквы из библиотеки Ну и конечно, можно задать массив букв из библиотеки и пользоваться им:
byte lol[] = {_H, _E, _L, _L}; disp.displayByte(lol); КАК СДЕЛАТЬ БЕГУЩУЮ СТРОКУ?
Очень просто, есть готовая функция runningString(). В качестве аргументов передаётся массив символов, длина строки и пауза-задержка вывода, то есть скорость бега бегущей строки. Для начала задаём массив, используя буквы из библиотеки или коды символов вида _буква:
byte welcome_banner[] = {_H, _E, _L, _L, _O, _empty, _empty, _e, _n, _j, _o, _y, _empty, _empty, _1, _6, _3, _7, _empty, _D, _i, _S, _P, _l, _a, _y }; Далее скармливаем его функции runningString(). Длина выводимой строки определяется функцией sizeof, по другому не получилось. Здесь 300 – время в миллисекундах между обновлениями экрана, т.е. скорость движения строки.
disp.runningString(welcome_banner, sizeof(welcome_banner), 300); // выводим
КАК ЗАДАТЬ СВОЙ СИМВОЛ? На картинке справа показано, каким образом строится “код” символа: то есть в каком порядке расположены биты индикаторов и как они включаются и выключаются. Поняв закономерность, вы сможете задать любую конфигурацию светящихся индикаторов в одном порте. Вывести символ можно одним из вариантов функции displayByte.
disp.displayByte(0x76, 0x79, 0x38, 0x38); // вывести HELL "вручную" ОНЛАЙН-ГЕНЕРАТОР СИМВОЛОВ
А ещё можно воспользоваться онлайн генератором двоичных кодов для индикаторов! Смотри картинку справа, думаю всё будет понятно.
/************** БУКВЫ И СИМВОЛЫ *****************/ #define _A 0x77 #define _B 0x7f #define _C 0x39 #define _D 0x3f #define _E 0x79 #define _F 0x71 #define _G 0x3d #define _H 0x76 #define _J 0x1e #define _L 0x38 #define _N 0x37 #define _O 0x3f #define _P 0x73 #define _S 0x6d #define _U 0x3e #define _Y 0x6e #define _a 0x5f #define _b 0x7c #define _c 0x58 #define _d 0x5e #define _e 0x7b #define _f 0x71 #define _h 0x74
#define _i 0x10 #define _j 0x0e #define _l 0x06 #define _n 0x54 #define _o 0x5c #define _q 0x67 #define _r 0x50 #define _t 0x78 #define _u 0x1c #define _y 0x6e #define _- 0x40 #define __ 0x08 #define _= 0x48 #define _empty 0x00 #define _0 0x3f #define _1 0x06 #define _2 0x5b #define _3 0x4f #define _4 0x66 #define _5 0x6d #define _6 0x7d #define _7 0x07 #define _8 0x7f #define _9 0x6f
Ссылки
Благодарим Вас за обращение! Ваш отзыв появится после модерации администратором.
Константин
11.01.2022 13:41:48
Нету там в библиотеке никакой "disp.displayIntZero(value)"
Іван
29.10.2020 20:20:17
как насчет работы с esp32?
Лавров
05.10.2019 07:14:39
AlexGyver криворукий копипастер!
icub
14.02.2019 04:52:21
Подписывать статью надо именем автора - AlexGyver, а не шифровать в ссылке.
Алекс
18.01.2019 17:10:18
Весьма напомнило вот эту статью: https://alexgyver.ru/tm1637_display/
|