Динамическое LED-художество в форме треугольника: сборка RGB-дисплея на 45 светодиодов с Arduino UNO
Компоненты и материалы
- APA-106 (программируемые RGB-светодиоды, 8 мм) — 45 шт.
- Arduino UNO — 1 шт.
- Провод МГТФ 0.35 мм (или облученный медный 22 AWG) — для шины питания и данных
- Фанера 12×12 дюймов, толщина 6 мм (1/4") — основа
- Корпус (опционально) — 3D-печать (STL есть в проекте) или фанера
Инструменты
- Паяльник с тонким жалом
- Клей-пистолет
- Термоусадочные зажимы (heat sink clips) — защита светодиодов от перегрева при пайке
- Дрель с буром 8 мм
О проекте
Проект вдохновлен двумя предыдущими работами автора: 5×5×5 RGB-кубом на APA-106 (осталось ~75 лишних светодиодов) и проектом «Servo Motor Art» в форме треугольника, создававшем интересные визуальные паттерны. Решено было объединить идеи: 45 светодиодов APA-106, расположенных в равностороннем треугольнике, управляются от одного пина Arduino через библиотеку Adafruit NeoPixel.
Аппаратная часть
Светодиоды крайне яркие — яркость выставлена на 30 из 255. При таком уровне потребление всего устройства укладывается в 1 А (USB-порт Arduino), внешний блок питания не обязателен.
Монтажная плата
- В фанере просверлены 45 отверстий Ø8 мм с шагом 1 дюйм (25.4 мм) по вершинам равностороннего треугольника (боковая грань 12 дюймов).
- Светодиоды APA-106 имеют 4 вывода: GND (длинный), Data In, VCC (+5V), Data Out (у плоской стороны корпуса). Выводы сгибаются по схеме: GND — с двойным изгибом для идентификации.
- Топология цепи данных: данные идут змеей — в нечетных рядах слева направо, в четных — справа налево. Это диктует разводку шин питания: в нечетных рядах GND идет вверх, VCC — вниз; в четных — наоборот.
- Разводка выполнена оголенным луженым проводом 22 AWG. Рекомендуется собрать шину GND справа, VCC — слева, тогда данные не будут перепрыгивать через питание.
- Arduino UNO закреплен на плате на пластиковых стойках (горячий клей).
Программная часть
Библиотека Adafruit NeoPixel предоставляет функции setPixelColor(index, color) и show(). Цвет кодируется 32-битным числом (8 бит на канал R,G,B). Автор использует свою палитру: числа 1–42 — радужные цвета, 0 — черный (выкл.), 43 — белый (вкл.).
Нумерация светодиодов в коде идет по рядам сверху вниз, слева направо (не змеей). Написана обертка mySetPixelColor(myIndex, paletteColor), переводящая логическую нумерацию в физическую.
Все анимации — табличные. В памяти программы (PROGMEM) хранятся таблицы:
- Порядок обхода для «мета» из верхней вершины
- Две таблицы для поворота этого обхода на 120° и 240° (для двух других вершин)
- Таблицы внешнего (24 LED), среднего (15 LED) и внутреннего (6 LED) треугольников
Общий знаменатель 24, 15, 6 — 120. Функция rotate() за 120 шагов поворачивает содержимое всего треугольника на 360°. Меняя стартовый паттерн, направление и скорость — получаются десятки эффектов.
Скетч разбит на 4 вкладки в Arduino IDE:
declarations— таблицы, константы,setup()main_loop— последовательность вызова анимацийanimations— реализация эффектов черезrotate()utils— вспомогательные подпрограммы
Текущая версия шоу содержит 26 анимаций, общая длительность цикла — 5 минут. Архив с кодом, тестовым скетчем и инструкцией по NeoPixel есть в разделе «Code» (ZIP).
Схемы и 3D-модели
- Схема подключения — в разделе «Schematics» (файл .jpg)
- Корпус для 3D-печати — STL-файл в разделе «Custom parts»
Производственный процесс
- Тригонометрия прямоугольного треугольника: ключевые понятия и формулы
- Закон синусов и закон косинусов: решение любого треугольника
- Программируемые логические контроллеры (ПЛК): современное цифровое управление для промышленных систем
- Динамическое выделение памяти в C: освоение malloc, calloc, realloc и free
- Walabasquiat: интерактивное генеративное искусство на Walabot, Raspberry Pi и Android
- Динамическая память в C++: стек против кучи
- G.AL® C330 Dynamic: высокопрочный алюминиевый сплав для прецизионных применений
- G.AL® C210 Dynamic: премиальная среднепрочная алюминиевая плита с высокой однородностью и низкими напряжениями
- Освоение горизонтального фрезерования: повышение производственной эффективности
- Динамические и насосы положительного смещения: ключевые различия