Новогоднее обострение.
Гирлянда на светодиодах WS2811.
Продолжение.
Гирлянда на светодиодах WS2811.
Продолжение.
На прошлый новый год я сделал простую ёлочную гирлянду на
основе светодиодов с микросхемами WS2811. Эта гирлянда была собрана на скорую руку на основе
отладочного набора STM32
Discovery:
В этом году мне захотелось
Вначале я было собрался купить качественную гирлянду с
светорассеивателями, примерно такую:
Однако, при стоимости гирлянды около 30 долларов доставка в
45 долларов, мне оказалась не по карману. И тогда я решил выкрутиться по-другому.
Заказал пару обычных гирлянд на светодиодах WS2818 (от WS2811
они отличаются тем, что гирлянда продолжит работать при выходе из строя одного из
чипов в цепочке). Заказывал без пристального выбора, вот
здесь. Также, в качестве светорассеивателей, заказал 150 самых дешёвых теннисных
шариков вот
здесь за совершенно смешную цену.
Затем нарисовал электрическую схему пульта управления:
На радио рынке выбрал подходящий корпус с кнопкой. Подошёл Z14.
Развёл плату под выбранный корпус и заказал в Китае десяток
плат:
Пока платы изготавливались, занялся программой. Во-первых,
изменил внутреннее представление цвета из системы RGB в систему HSV (цвет,
насыщенность, яркость). Это дало возможность легко играться с изменением
цветов, их зажиганием и погасанием. Кстати, мне пришлось самому писать
преобразование из HSV в RGB,
так как все встреченные примеры из интернета были с грубейшими ошибками и не
работали.
После этого я изменил главную программу для работы с
кнопкой. Теперь эффекты сменяются автоматически через пару минут или при
коротком нажатии на кнопку. Если нужно остановить смену эффектов, достаточно
подержать кнопку больше 2-х секунд. Повторное короткое нажатие на кнопку возвращает
автоматическую смену эффектов. Больше для новогодней гирлянды и не нужно.
Также
я изменил программу, чтобы процессор работал без кварца.
Затем я набросал черновики различных эффектов и стал ждать
получения посылок из Китая.
Когда приехали платы:
Я спаял один блок:
Блок подключается к гирлянде с помощью её же разъёма от
задней части. На лампы я с сыном насадил рассеиватели света, сделанные из
теннисных шариков. Для этого достаточно проделать в шарике отверстие диаметром
12мм. Я просто проплавил металлическим цилиндром подходящие отверстия.
Получилось довольно неплохо:
Питаются гирлянды от блоков питания 5В 3А, купленных на
рынке электро товаров.
После этого мы всей семьёй занялись отладкой и выдумыванием
приятных глазу эффектов. Это не так просто, как кажется на первый взгляд. Во-первых,
лампочки не должны навязчиво моргать, чтобы не утомлять глаза при долгом
включении. Во-вторых, эффекты должны смотреться, когда гирлянда развешена на
ёлке. В-третьих, эффекты должны вызывать ассоциацию с новогодним праздником.
Для этого специально подбиралась программа генерации
случайного цвета, в которой большое место занимают разнообразные новогодние цвета
от светло-розового до насыщенного красного. Для некоторых эффектов вообще цвета
назначены в приказном порядке. В общем, получился хороший пример коллективного
творчества.
Я изготовил три гирлянды. Одну повесил на ёлку, вторую на
балкон, а третью подарил на новый год друзьям. Новогодние праздники гирлянды
отработали без замечаний.
Вот видео эффектов:
Эффектов пока двенадцать:
- Вся гирлянда в два цвета через одну лампу, цвета плавно меняются по очереди.
- Один огонёк случайного цвета бежит вверх.
- Один огонёк бежит вверх и вниз, цвет меняется внизу.
- Восемь огоньков разного цвета бегут вверх.
- Четыре огонька разных цветов движутся вверх и вниз по гирлянде.
- В случайных местах гирлянды загораются и гаснут десять огоньков случайного цвета (звёздное небо).
- Восемь участков заданных цветов медленно движутся вверх по гирлянде.
- Гирлянда светится радугой с медленным изменением цвета.
- Вся гирлянда пульсирует разными цветами.
- Вся гирлянда светится одним цветом, медленно изменяя цвет.
- Гирлянда светится случайными цветами и некоторые лампы постепенно меняют цвет.
- Огоньки разного цвета бегут вверх по гирлянде, накапливаясь начиная от вершины.
P.S. Поскольку все, кто увидел мою гирлянду, спрашивали о возможности её приобрести, в этом году я сделал несколько экземпляров на продажу.
Творческий процесс также не стоит на месте, я добавил два новых эффекта: "гусеница" и "свечи" и дополнительный режим гирлянды.
Об имитации мерцания свечей я мечтал давно, и для этого значительно дополнил программу управления. Теперь каждый светодиод может отображать свой паттерн управления, в котором записаны изменения цвета светодиода, время свечения этого цвета и скорость изменения цвета. Также мне пришлось оцифровать последовательность изменения цвета и яркости горения настоящей свечи и на её основе составить и отрегулировать паттерн свечения светодиода. По ходу изысканий я понял, что абсолютно все выложенные в сети программы преобразования цвета HSV-RGB (из системы "цвет насыщенность яркость" в систему "красный зелёный синий") имеют одну и ту же ошибку и просто скопированы одна из другой, без практической проверки. Написав правильное преобразование, я получил отличную, не повторяющуюся сорока секундную последовательность имитации горения настоящей свечи. Для того, чтобы все лампы в гирлянде светились по разному, для каждой лампы эта последовательность начинается с произвольного начального значения. Получилось неплохо.
Дополнительный режим гирлянды добавлен по просьбе новых пользователей - "ночник".
После двойного нажатия на кнопку текущая комбинация цветов на гирлянде останавливается, её яркость плавно уменьшается до небольшого значения. В таком режиме гирлянда может использоваться как ночная подсветка. Выбрав нужный эффект и момент, можно управлять яркостью и цветом ночника.
Конечно, улучшать гирлянду можно до бесконечности. Например, увеличить длину гирлянды до 100 лампочек, добавить ещё интересных эффектов, но это всё в будущем. А пока приведу довольно большую цитату из письма одного из счастливых обладателей текущего варианта:
---
Что хочу сказать...
Это просто ВАУ!
Я ожидал чего-то подобного, но не ожидал, что это будет так круто.
В каждом режиме сразу видно, что человек (не машина!) придумал, вложил душу, возможно свои детские мечты в каждый чудный алгоритм.
Наблюдал сам достаточно долгое время, потом также зависли мои домашние, поскольку елка начала светиться совсем по другому!
Мне все нравиться, начиная от выбранной скорости переключения до комбинаций, а также оригинальных цветов, которых мы еще не видели ;)
Возможно... это все так подействовало, потому что мы выросли в одной стране и примерно в одно и тоже время. Но в любом случае - ЭТО ВЕЩЬ!!!
Как удалось выбрать и выдать на гора такие цвета - за это особое спасибо.
Я, как владелец двух разных китайских поделок, в каждом из которых примерно заявлено по 200 эффектов, есть регулировка скорости, яркости пульт и прочая ерунда,
так и не увидел тех некоторых приятных теплых цветов, которые есть у тебя.
---
Здравствуйте! Спасибо вам за статьи! Прошу разрешения повторить вашу гирлянду
ОтветитьУдалитьПожалуйста, повторяйте. Схема выложена в этом блоге, плату можно взять любую подходящую, хоть evolution board с алиэкспресса. Можете сделать и сами, там несложно. Для прошивки сообщите email.
УдалитьДоброго дня! Надішліть, будь ласка, код на scorry.scorry@gmail.com , спробую теж зробити.
ОтветитьУдалитьДякую!
Отослал прошивку вам на почту. Это не исходник, а hex файл для программирования чипа.
ОтветитьУдалить