Бегущая строка на матрице WS2812B 32×8

Яркая бегущая строка с плавной анимацией, сменой цветов и поддержкой шрифтов. Всё на Adafruit NeoMatrix + GFX без лишних библиотек.

Бегущая строка WS2812B

Что понадобится

  • Матрица WS2812B 32×8
  • Arduino Uno / Nano / Mega
  • Блок питания 5 В ≥ 2 А
  • Резистор 300–470 Ом (на линию данных)

Библиотеки

  • Adafruit NeoPixel
  • Adafruit GFX Library
  • Adafruit NeoMatrix

Рабочий скетч (проверено)

#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>

#define PIN     9
#define WIDTH   32
#define HEIGHT  8

Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(
  WIDTH, HEIGHT, PIN,
  NEO_MATRIX_TOP + NEO_MATRIX_RIGHT +
  NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG,
  NEO_GRB + NEO_KHZ800);

const uint16_t colors[] = {
  matrix.Color(255, 0,   0),
  matrix.Color(0,   255, 0),
  matrix.Color(0,   0,   255),
  matrix.Color(255, 255, 0),
  matrix.Color(255, 0,   255)
};

String text = "PRIVET MIR! BEGUSHAYA STROKA RABOTAET!";  // меняй текст здесь

int x = matrix.width();
int pass = 0;

void setup() {
  matrix.begin();
  matrix.setTextWrap(false);
  matrix.setBrightness(30);
  matrix.setTextColor(colors[0]);
}

void loop() {
  matrix.fillScreen(0);
  matrix.setCursor(x, 0);
  matrix.print(text);

  if (--x < -matrix.width(text)) {
    x = matrix.width();
    if (++pass >= 5) pass = 0;
    matrix.setTextColor(colors[pass]);
  }

  matrix.show();
  delay(60);
}
  

Для русского текста

Замени glcdfont.c в библиотеке Adafruit_GFX на версию с кириллицей (ищи «Adafruit GFX Russian font» на GitHub) и пиши текст сразу на русском.

Смена шрифтов (латиница)

  1. Скачай шрифт из папки Adafruit_GFX/Fonts
  2. Добавь: #include "Fonts/FreeSans9pt7b.h"
  3. После begin(): matrix.setFont(&FreeSans9pt7b);

Итог

Простая, надёжная и яркая бегущая строка за 15 минут.

FAQ — бегущая строка на матрице WS2812B 32×8

Можно ли собирать бегущую строку на WS2812B без FastLED?

Да. В статье используется связка Adafruit NeoMatrix, Adafruit GFX и Adafruit NeoPixel. Эти библиотеки полностью заменяют FastLED и позволяют выводить текст, использовать цветовые палитры и работать с координатами матрицы.

Какая матрица подходит для проекта и сколько ей нужно питания?

Подходит любая матрица или лента WS2812B. В примере используется матрица 32×8 (256 светодиодов). Для корректной работы требуется блок питания 5 В с током от 2 А и резистор 300–470 Ом на линии данных.

Какие библиотеки нужны для бегущей строки и зачем менять glcdfont.c?

Необходимы Adafruit NeoMatrix, Adafruit GFX и Adafruit NeoPixel. Чтобы матрица корректно отображала кириллицу, нужно заменить файл шрифта glcdfont.c в библиотеке GFX на русифицированную версию. Это добавляет поддержку русских символов.

Как меняются цвета и скорость текста в приведённом скетче?

Цвет переключается после каждого полного прохода строки, циклом перебирая массив colors[]. Скорость контролируется задержкой delay(50): чем меньше значение, тем быстрее движется текст.

Как работает руссификатор символов в коде?

В коде реализована простая функция rus(), которая сопоставляет русские буквы ближайшим аналогам из ASCII. Это позволяет отображать кириллицу даже без полноценного русскоязычного шрифта. Для корректных шрифтов рекомендуется использовать заменённый файл glcdfont.c.

Можно ли использовать свои шрифты в бегущей строке?

Да. Достаточно подключить нужный файл из каталога Adafruit_GFX/Fonts/, добавить директиву #include и вызвать matrix.setFont() после инициализации матрицы. Это позволяет применять компактные или декоративные шрифты на выбор.

Какие возможности можно добавить в проект?

После базовой реализации можно добавить часы и дату, вывод прогноза погоды через Wi-Fi, управление текстом по Bluetooth или Wi-Fi, а также создать собственные русские шрифты через сервис Image2cpp.