Светодиодная матрица 16×16 на WS2812 и Arduino: бегущая строка и эффекты
Светодиодная матрица 16×16 на WS2812 — яркий дисплей для Arduino с 256 адресными RGB-светодиодами. Каждая точка управляется индивидуально, создавая анимации, бегущие строки, узоры или текст. Библиотека FastLED для эффектов огня/пятен, Adafruit NeoMatrix для текста. Русификация шрифта для кириллицы. Проект для бегущих строк, новогодних гирлянд, рекламы или индикации. Питание 5В, отдельный блок для стабильности. Расширьте до 32×32 или ленты для больших экранов.
Возможности матрицы 16×16 WS2812
256 NeoPixel в компактном 16×16 см. Полноцветные анимации: огонь, искры, радуга, пятна. Бегущая строка с русским текстом. Русификация шрифта GFX. Смена цвета, яркости, скорости. Интеграция с часами, датчиками или Wi-Fi (ESP8266). Каскад для больших экранов. Новогодние эффекты, реклама, индикация статуса.
Компоненты
- Arduino Uno/Nano
- Матрица 16×16 WS2812
- Блок питания 5В 5–10А
- Конденсатор 1000 мкФ
- Резистор 330 Ом (DIN)
Подключение матрицы
- DIN → D6 Arduino (через 330 Ом)
- 5V → внешний БП
- GND → общий
- Конденсатор параллельно питанию
DOUT для каскада к DIN следующей.
Библиотеки
FastLED для эффектов (огонь, линии). Adafruit NeoPixel, NeoMatrix, GFX для текста. Русификатор glcdfont.c для кириллицы.
Эффект Lines
Меняющиеся линии, цветовые переходы. Настройка скорости, яркости в коде.
Эффект Spots
Плавные расплывающиеся пятна. Регулировка масштаба, охлаждения.
Бегущая строка
Русский текст, смена цвета (радуга). Яркость фона/текста, позиция, скорость.
Скетч бегущей строки
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
#define PIN 6
Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(16, 16, PIN, NEO_MATRIX_TOP + NEO_MATRIX_LEFT + NEO_MATRIX_ROWS + 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, 255, 255)};
int numColors = 5;
void setup() {
matrix.begin();
matrix.setTextWrap(false);
matrix.setBrightness(40);
matrix.setTextColor(colors[0]);
}
int x = matrix.width();
int pass = 0;
void loop() {
matrix.fillScreen(0);
matrix.setCursor(x, 5);
matrix.print("С Новым Годом!");
if(--x < -100) {
x = matrix.width();
if(++pass >= numColors) pass = 0;
matrix.setTextColor(colors[pass]);
}
matrix.show();
delay(50);
}
Прокручивает текст «С Новым Годом!» справа налево по экрану.
После полного выхода текста меняет цвет на следующий из массива (красный → зеленый → синий → жёлтый → белый).
Задержка 50 мс обеспечивает плавное движение.
Яркость матрицы установлена на 40.
Русификация
Замените glcdfont.c в Adafruit_GFX на русифицированный. Вывод кириллицы без кракозябр.
Расширение
Каскад матриц для больших экранов. Wi-Fi управление ESP8266. Часы, температура DHT. Новогодние анимации.
Заключение
Матрица 16×16 WS2812 — универсальный дисплей для Arduino. Бегущая строка, эффекты, русский текст. Готово к новогодним гирляндам или рекламе.
FAQ — Матрица 16×16 WS2812
Мерцание матрицы?
Добавьте конденсатор 1000 мкФ параллельно питанию. Отдельный БП 5В 10А для стабильности.
Русский текст кракозябры?
Замените glcdfont.c в Adafruit_GFX на русифицированный. Или используйте символы латиницей.
Больше матриц каскадом?
DOUT первой → DIN второй. NUM_LEDS = 512 для 32×16. Общий пин данных.
Питание от Arduino?
Нет, максимум 20–30 LED. Для 256 — внешний БП 5В 10–15А.
Другие эффекты?
FastLED примеры: Fire2012, Rainbow, Confetti. Меняйте в скетче.
ESP8266 вместо Arduino?
Да, те же библиотеки, пины GPIO другие. Wi-Fi для удалённого управления.
Скорость анимации?
delay() в loop или FPS в FastLED. Меньше delay — быстрее.