Библиотека
Специализированная библиотека предназначена для работы со модулями цифры, построенными на умных светодиодах WS2812B. При помощи этой библиотеки можно выводить на экран любые цифры и различные символы английского алфавита, а также некоторые специальные символы, наподобие знака «градусы» и т. п. знаков.
Табло под управлением библиотеки может отображать множество различных данных: информацию о температуре, текущее время, счёт спортивных соревнований и т. д.
Возможности библиотеки
Ниже представлен список основных функций и возможностей библиотеки:
- Работа с любым количеством панелей цифры на WS2812
- Вывод на экран цифр
- Вывод целочисленных значений
- Вывод чисел с плавающей точкой
- Вывод на экран букв (часть букв английского алфавита — С, A, U, t и т. д.)
- Вывод на экран специальных символов (знаки °, -, = и пр.)
- Вывод одиночных и групповых символов
- Снабжение выводимых чисел буквенными индексами
- Задание места (порядка) вывода данных на экран
- Вывод на экран информации разными цветами
- Организация динамического вывода на экран
- Изменение яркости свечения выводимой информации
- Работа со специализированными шаблонами вывода (время, температура и т. д.)
- Задание номера управляющего GPIO контроллера
- Задание конфигурации подключённых панелей
- И прочие возможности
Библиотека имеет также в своём составе множество готовых примеров, которые можно использовать для обучения и в качестве отправной точки для ваших проектов.
Описание библиотеки
В своей работе библиотека использует другую популярную библиотеку Adafruit_NeoPixel (находится в архиве с основной библиотекой). Пользователь может прозрачно работать как с функциями первой, так и с функциями второй библиотеки, что ещё больше расширяет возможности этого решения.
Примечание. Функции библиотеки Adafruit можно использовать для работы со светодиодами, как с одной большой лентой, а функции библиотеки ELABORY предназначены для вывода цифровой и буквенной информации на панели.
В пользовательских скетчах библиотека подключается строкой:
#include <ElaboryDigitSmart.h>
В библиотеке задаются значения параметров по умолчанию. Это номер управляющего GPIO (по умолчанию 6).
#define DEFAULT_GPIO 6
Каждая панель содержит 30 умных светодиодов WS2812B, 28 из которых предназначены для отображения цифр и знаков, а два остальных — для отображения разделителей между знаками (точка, двоеточие).
#define DIG_LEN 30
Библиотека поддерживает подключение любого количества панелей, но по умолчанию задаётся значение 4 панели (минимальное количество панелей для практического применения).
#define DEFAULT_PANELS 4
По умолчанию также задаётся яркость свечения светодиодов равная 4, но её можно изменить в скетче в диапазоне от 1 до 255, в зависимости от ваших потребностей.
#define DEFAULT_BRIGHT 4
В библиотеке также задаются предопределённые константы для цифр. Эти буквенные обозначения можно использовать в ваших программах для повышения наглядности и читаемости кода.
#define DIG_0 0 #define DIG_1 1 #define DIG_2 2 #define DIG_3 3 #define DIG_4 4 #define DIG_5 5 #define DIG_6 6 #define DIG_7 7 #define DIG_8 8 #define DIG_9 9
Далее определяются 25 констант для работы со знаками и специальными символами. Эти константы также можно использовать в своих скетчах для удобства программирования и повышения качества кода.
#define SIGN_A 0 #define SIGN_C 1 #define SIGN_E 2 #define SIGN_F 3 #define SIGN_H 4 #define SIGN_I 5 #define SIGN_J 6 #define SIGN_L 7 #define SIGN_O 8 #define SIGN_P 9 #define SIGN_S 10 #define SIGN_U 11 #define SIGN_b 12 #define SIGN_c 13 #define SIGN_h 14 #define SIGN_n 15 #define SIGN_o 16 #define SIGN_r 17 #define SIGN_t 18 #define SIGN_u 19 #define SIGN_MINUS 20 #define SIGN_UP 21 #define SIGN_EQUAL 22 #define SIGN_UNDER 23 #define SIGN_DEG 24
В библиотеке также определяются восемь основных цветов для вывода на экран различной информации. И эти переменные также доступны из пользовательских скетчей.
uint32_t white = strip.Color(_bright, _bright, _bright);
uint32_t red = strip.Color(_bright, 0, 0);
uint32_t green = strip.Color( 0, _bright, 0);
uint32_t blue = strip.Color( 0, 0, _bright);
uint32_t cyan = strip.Color( 0, _bright, _bright);
uint32_t yellow = strip.Color(_bright, _bright, 0);
uint32_t magenta= strip.Color(_bright, 0, _bright);
uint32_t black = strip.Color( 0, 0, 0);
Примечание. В библиотеке также есть функция для изменения яркости свечения всех основных цветов (см. соответствующий раздел далее).
Описание функций
Основной функцией «конструктором», который инициализирует объект, является
ElaboryDigitSmart(uint16_t n=120, uint8_t p=6);
В случае, когда у вас управляющая линия Data подключена на дефолтный пин GPIO6 и к контроллеру подключено четыре панели, можно использовать упрощённую конструкцию инициализации объекта:
ElaboryDigitSmart ds = ElaboryDigitSmart();
Если же вы подключили панели на другой пин контроллера или количество панелей отличается от дефолтного, то нужно в конструкторе задать требуемые значения:
ElaboryDigitSmart ds = ElaboryDigitSmart(PIXELS, GPIO);
Примечание. Количество пикселей в ленте определяется по формуле 30 * количество подключённых панелей.
Работа со всем экраном
void setAll(uint32_t c) — Включение всех светодиодов выбранным цветом.
void clearScreen() — Выключение всего экрана.
void clearPanel(uint16_t n) — Очистка одной панели по её номеру.
void drawZeros(uint32_t c) — Заполнение всех панелей нулями определённого цвета.
Цвета
void setBright(uint8_t b) — установка яркости свечения выводимой информации. Устанавливается в диапазоне от 1 до 255 (по умолчанию 4).
uint32_t randomColor(bool noWhite) — генерация случайного цвета. Либо все доступные цвета, либо все, кроме белого, в зависимости от параметра функции.
Случайные значения
uint16_t randomPanel() — возвращает случайный номер панели из диапазона подключённых.
uint16_t randomDigit() — возвращает случайную цифру (0-9).
uint16_t randomSign() — возвращает случайный знак или символ из предопределённого в библиотеке набора.
Работа с цифрами
int extract(int v, int p) — возвращает цифру, находящуюся в числе (v) на определённой позиции (p).
Вывод цифр
void printDigit(uint16_t n, uint16_t d, uint32_t c) — выводит цифру (d) цветом (c) в позицию (панель) с номером n.
void print1(uint16_t start, uint16_t v, uint32_t c) — выводит одну цифру (v) цветом (c) в позицию (панель) с номером n.
void print2(uint16_t start, uint16_t v, uint32_t c) — выводит число (две цифры) v цветом (c) в позицию, начиная с панели n справа налево.
void print3(uint16_t start, uint16_t v, uint32_t c) — выводит число (три цифры) v цветом (c) в позицию, начиная с панели n справа налево.
void print4(uint16_t start, uint16_t v, uint32_t c) — выводит число (четыре цифры) v цветом (c) в позицию, начиная с панели n справа налево.
void printFloat(uint16_t start, float v, byte s, uint32_t c) — выводит число с плавающей точкой (в формате ***.* или **.**) v цветом (c) в позицию, начиная с панели n справа налево. Количество отображаемых знаков после запятой (1 или 2) определяется параметром s.
Вывод знаков и символов
void printSign(uint16_t n, uint16_t s, uint32_t c) — функция выводит предопределённый знак (см. определение констант выше) в определённую позицию (панель) n, цветом (c). Например, чтобы вывести знак «минус» синим цветом в крайнюю левую панель (0), нужно использовать следующую конструкцию:
printSign(0, SIGN_MINUS, blue);
Далее следуют специальные функции, предназначенные для удобного вывода конкретного символа или знака. Здесь достаточно просто задать позицию (номер панели) и нужный вам цвет.
void zero (uint16_t n, uint32_t c) void minus (uint16_t n, uint32_t c) void up (uint16_t n, uint32_t c) void under (uint16_t n, uint32_t c) void equal (uint16_t n, uint32_t c) void deg (uint16_t n, uint32_t c) void celsius(uint16_t n, uint32_t c) void fheit (uint16_t n, uint32_t c) void amper (uint16_t n, uint32_t c) void voltage(uint16_t n, uint32_t c) void temp (uint16_t n, uint32_t c) void hum (uint16_t n, uint32_t c) void pres (uint16_t n, uint32_t c)
Назначение каждой функции понятно из их названия. Эти функции можно использовать для маркировки на экране выводимых данных. Например, 28A (28 ампер), 14°C (14 градусов Цельсия), P755 (атмосферное давление 755 единиц) и т. д.
Разделители
void point(uint16_t n, uint32_t c) — дополнительная (не являющаяся частью цифры) точка в нижней части панели.
void divider(uint16_t n, uint32_t c) — дополнительная (не являющаяся частью цифры) точка в средней части панели.
void timer(uint16_t n, uint32_t c) — обе вышеописанные точки (двоеточие), которое может использоваться в качестве разделителя между часами и минутами в электронных часах.
Прочие параметры
uint16_t getPanels() — возвращает общее количество подключённых панелей (для четырёх панелей вернёт 4).
uint16_t maxPanel() — возвращает номер последней (крайней правой) панели (для четырёх панелей вернёт 3). Крайняя левая панель всегда имеет номер 0.
Заключение
Более подробно познакомиться с примерами использования библиотеки можно на этой странице нашего руководства.
Купить
Купить модули цифры на WS2812 можно в наших магазинах:
Наши услуги по разработке проектов, электроники, сервисов, 3D печати и т. д.