Библиотека

Специализированная библиотека предназначена для работы со модулями цифры, построенными на умных светодиодах 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 можно в наших магазинах: