В интернете я нашел очень много интересных идей о том, как сымитировать эффект огня при помощи программируемых светодиодов WS2812c и Ардуино. Я попытался сделать свой собственный ночник, который добавит романтики в комнату.
В каждой инструкции использовались разные комбинации типов светодиодов и микроконтроллеров для них. У всех них были различные недостатки, например, насколько большой может быть огненная лампа, для чего она предназначена и т.д. Мой результат вы увидите ниже. Как и любой свой проект, я не хочу называть его завершённым, так как смотря на него, я каждый раз обнаруживаю новые вещи, которые можно улучшить или доработать.
Шаг 1: Создаём электронику
Для проекта нужны:
- Светодиодная полоска WS2812b со светодиодами, расположенными очень близко друг к другу. Можно использовать другие светодиоды, например, если вы хотите создать более высокую напольную лампу имитирующую пламя, вместо настольной.
- Ардуино нано. Для меня этого модуля было вполне достаточно. Если вы хотите сделать более сложную штуку, то другие типы плат подойдут лучше
- Провода для соединения
Так как диоды и Ардуино нано используют 5V, я был привязан к этому вольтажу. Это означает, что для питания лампы можно использовать павербанк и создавать романтическую обстановку где угодно и когда угодно.
На моей светодиодной полосе было 120 диодов, я разделил её на полосы по 20 диодов на цилиндре, это можно увидеть на фото. Также я припаял штекеры папа\мама, чтобы иметь возможность заменять какие-то части лампы в будущем.
Для программирования светодиодов я использовал библиотеку NeoPixel. Также были использованы части кода, найденные в интернете, я сильно изменил, чтобы адаптировать и придать свечению более реалистичное ощущение.
Код можно найти здесь: ссылка.
Шаг 2: Световые эффекты
Итак, закончив с электроникой, мы видим, что свечение всё еще не выглядит как огонь. Для придания реалистичности нам надо рассеять свет от диодов, так, чтобы свечение каждого отдельного диода перестало быть различимым.
Немного поэкспериментировав с бумагой (которая слишком рассеивала свет) и пластиковой плёнкой, выкрашенной в белый (также не подходившей для моих нужд), я пришёл к выводу, что единственным нормальным решением будет использовать матовое стекло или акрил.
Так как я хотел часто использовать лампу с имитацией огня, я решил просто купить обычную лампу и использовать её как оболочку.
Я убрал из лампы всю электронику и заменил её на свою. Стекло лампы давало приятный рассеивающий эффект, так что пара ухищрений и доработка программного кода сделали меня полностью удовлетворённым получившимся результатом.