DIY Arduino «Снежинка»: 30-LED декоративный дисплей на Arduino Nano
Компоненты и расходные материалы
| Компонент | Количество |
|---|---|
| Arduino Nano R3 | 1 |
| SMD-светодиоды (0603/0805) | 30 |
| Латунная проволока 0.8 мм (каркас + проводка) | ~2 м |
| Резисторы 220 Ом (SMD 0805/1206) | 17 |
| Картон + двусторонний скотч (для жёга SMD) | 1 |
Инструменты
- Паяльник, припой, плоскогубцы
О проекте
Декоративная «снежинка» из 30 светодиодов, сгруппированных в 17 независимых каналов, управляемых Arduino Nano. Каждая группа может ШИМ-димироваться для плавных анимаций. Каркас и проводка — латунная проволока (freeform soldering), что делает устройство эстетичным и без печатной платы.
Конструкция
- Выбор шаблона: кристалл снежинки, напечатанный под размер Arduino Nano (шестиугольник в центре).
- Каркас/земля: согнут шестиугольник из одного куска проволоки, припаял 6 лучей — общая шина катодов.
- Монтаж SMD LED: использовал приспособление из картона и скотча для удержания светодиодов при пайке к лучам. Аноды направлены к центру.
- Разводка анодов: Arduino Nano размещён под центральным шестиугольником. 3 слоя латунной проволоки соединяют пины Nano с анодами через резисторы 220Ω. Требует терпения — избегать замыканий, делать аккуратно.
- Группировка пинов: Nano имеет 18 выходов (A6/A7 — только вход). 1 пин — тач-сенсор. Осталось 17 пинов для 17 групп LED:
- 6 «листьев» (концы лучей) — по 1 пину каждый
- 6 «ветвей» (пары по 2 LED) — на 6 PWM-пинов
- 5 «ядра» (пары по 2 LED) + 1 группа из 4 LED — на оставшихся пинах
- Ток на пин ~8 мА (220Ω), суммарно ~240 мА — чуть выше безопасного для ATmega328P (200 мА), но работает.
Ёмкостной тач-сенсор
Дополнительная латунная стержень — тач-сенсор (библиотека ADCTouchSensor от Paul Stoffregen). Позволяет переключать анимации касанием, включать/выключать, «искры» при прикосновении.
Важное замечание
Проверяйте все диоды перед пайкой! После монтажа заменить почти невозможно (обратная полярность или брак).
Программирование и анимации
Изначально планировалось димировать только PWM-пины, но библиотека SoftPWM позволяет программный ШИМ на любых пинах — открывает неограниченные возможности анимаций.
Исходный код (snowflake.ino)
#include "SoftPWM.h"
#include <ADCTouchSensor.h>
byte edgeLedPins[] = {13, A4, A5, 2, 8, 12}; // 6 "листьев"
byte middleLedPins[] = {10, 6, 3, 5, 9, 11}; // 6 "ветвей" (PWM)
byte innerLedPins[] = {A2, A3, A1, 4, 7, A1}; // 5 пар + 1 общий (A1 дважды)
ADCTouchSensor touchSensor = ADCTouchSensor(A0, 1);
void setup() {
Serial.begin(115200);
SoftPWMBegin();
}
byte animation = 0;
long touchAt = 0;
void loop() {
switch (animation) {
case 0: _fill(100); break;
case 1: shinyAnimation(); break;
case 2: circleAnimation(); break;
case 3: loopAnimation(); break;
case 4: fireworkAnimation(); fireworkAnimation(); fireworkAnimation(); fireworkAnimation(); fireworkAnimation(); fireworkAnimation(); animation++; break;
case 5: smileAnimation(); break;
default: animation = 0; break;
}
int touchValue = touchSensor.read();
if (touchAt + 2000 < millis() && touchValue > 1000) {
touchAt = millis();
animation++;
_fill(0);
}
}
// Анимации: firework, smile, circle, wave, loop, slowOn, shiny, fading
// Все используют SoftPWMSet(pin, value) для плавности.
// Вспомогательные функции: _fill(), _prevIndex(), _nextIndex() для кольцевых буферов.
Полный код с всеми анимациями прилагается к проекте.
Схемы
- Схема распиновки (PNG)
Производственный процесс
- Как дюбельные шплинты (dowel pins) обеспечивают точность проектов: применение в мебели, полках и станках
- Материалы для шплинтов: дерево, металл и пластик — подробный разбор
- 5 ключевых факторов выбора правильных шплинтов (Dowel Pins)
- Валёк для теста: от этрусских истоков к современному мастерству
- Эволюция и мастерство современных кеглей для боулинга
- От древних фибул к современному производству: история булавки-английки
- TinyML: инженеры объединяются для стандартизации AI в ультра-низкопотребляющих системах
- Сборка кабеля развязки I/O и адаптера для макетной платы Raspberry Pi — пошаговое руководство
- Динамическое LED-художество в форме треугольника: сборка RGB-дисплея на 45 светодиодов с Arduino UNO
- Матрица шаровых контактов (BGA): что это и почему это важно