Мобильная версия Форум Arduino Документация Гарантийные условия 0 0
UA RU
График работы магазина:
Пн-Пт: 8.00 - 19.00
Сб: 10.00 - 17.00
Вс: выходной
Каталог
Напиши статью и получи скидку!

Доработка библиотеки 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

Ссылки

Ваша оценка статьи:

Отлично
Хорошо
Удовлетворительно
Плохо
Очень плохо

Общая оценка:

Оценка "Доработка библиотеки TM-1637 для 7-ми сегментного екрана"
3 из 5
сделана на основе 5 оценок 5 клиентских отзывов.

Благодарим Вас за обращение! Ваш отзыв появится после модерации администратором.
Константин
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/
оплата картами Visa и MasterCard