Подготовка
Когда наскучили китайские однотипные гирлянды - почему бы не сделать свою? Она будет ярче светить и иметь ничем не ограниченное количество режимов работы. Ну кроме вашего воображение и размера памяти платы Arduino :)
Вот что нам понадобится для ее изготовления (не считая компьютера с IDE и usb-кабеля):
- Arduino Nano: 1 2 3 4 5 6
- 3D-принтер: 1 2 3 4 5 6
- адресная RGB-лента WS2812B: 1
- Блок питания на 5 вольт (3А): 1 2 3
- 3 потенциометра: 1 2 3
- кнопка: 1 2 3
- выключатель: 1
- резистор на 220 Ом: 1 2 3 4 5 6
- провода и паяльник думаю в вас уже, если нет - это можно найти в каталоге
Так как корпус будет небольшой, Arduino Nano плату следует взять без распаянных пинов на ней. К тем, которые мы будем использовать, мы припаяем провода напрямую.
Если 3D-принтера у вас нет - подойдет любой корпус размером от 10х10см 3см толщиной. Если принтер есть - вот 3D-модель корпуса. Но я на всякий случай приложил ссылку на очень неплохой 3D-принтер - вдруг вы именно сейчас выбираете, какой купить. Советую купить именно такой - он не требует сборки и имеет закрытый корпус, что позволяет без проблем печатать не только PLA, но и ABS пластиком.
Я спроектировал корпус так, чтобы он не требовал никаких специальных креплений и винтов: крышка задвигается ио направляющим и имеет отверстия для крепления - можно прикрепить шурупами к стене или хомутом - куда будет удобно. Корпус имеет упор для Arduino - плата встает в распор и не требует крепления.
Потенциометры подойдут любые, я взял простые 3х-контактные. Кнопка обычная, чуть больше стандартной. Выключатель нужен для того, чтобы обесточить плату при ее перепрошивки, при использовании он не требуется. Если вы не планируете дорабатывать код, то можно обойтись и без него.
Лента RGB подойдет не любая, а только адресная. Именно она позволит нам управлять каждым светодиодом по отдельности, зажигая его любым из 16 миллионов цветов. Код проекта рассчитан на ленту WS2812B на 50 светодиодов. Такие ленты могут иметь разную плотность (разное расстояние между светодиодами), имеют три контакта - два для питания и один управляющий, а также их можно резать на любое количество частей, или, наоборот, спаивать.
Мощность блока питания зависит от количества светодиодов ленты, напряжение - 5 вольт. На каждые 50 светодиодов нужно 3 ампера. Так что для 150-ти светодиодов вам понадобится уже 9-10 амперный блок питания.
Техническая часть
Паяем все детали по следующей схеме:
Батарейный блок обозначает подключение блока питания. В итоге должно получится примерно вот так:
Прошивка
Скачиваем код с сайта проекта на github: https://github.com/arduinotech/new_year_rgb. Если вы используете PlatformIO IDE - вам потребуется оба файла: platformio.ini и src/main.ino, а в platformio.ini нужно будет заменить usb-порт на тот, к которому у вас подключена плата. Если же для прошивки будет использоваться Arduino IDE, тогда достаточно будет скопировать код из файла src/main.ino и установить библиотеку FastLED (очень рекомендую перейти на PlatformIO или хотя бы попробовать).
Сам код довольно простой, реализовано несколько режимов работы гирлянды, переключаться между режимами кнопкой, подключенной к пину BUTTON_PIN. Ну и при необходимости нужно заменить кол-во светодиодов в ленте, если у вас их не 50 - это LED_COUNT. LED_PIN - пин, к которому подключен управляющий контакт ленты, а ENCODER_1_PIN, ENCODER_2_PIN и ENCODER_3_PIN - пины подключения потенциометров.
На данный момент реализовано 5 простых эффектов в качестве примера. Я специально не стал реализовывать больше, чтобы вы использовали код в качестве примера и реализовали сами то, что вам больше понравится.
Доработки и идеи
Полученный девайс можно намотать на елку, повесить на стену или куда-то еще, при наличии мощного блока питания можно довольно неплохо осветить небольшое помещения, нарастив длину ленты. А можно, напротив, уменьшить длину ленты до 5-10 диодов, для питания которых вполне хватит батарейного блока, и собрать светящуюся елочную игрушку.
Довольно интересно, создавая новые варианты мерцания ленты, использовать потенциометры для изменения скорости мерцания, яркости и цвета. При желании можно даже придумать и реализовать простенькие игры. В общем, я надеюсь, статья будет кому-то полезна.