В тази статия ще разгледаме някои много полезни ефекти за интериора, които могат да бъдат създадени с помощта на LED лента. Ще говорим и за алгоритмите, за това как математическите изчисления позволяват на светодиодите да създават илюзията за топлина и комфорт, а именно - пламък, истински цифров пламък.
Всички изходни кодове, които ще бъдат анализирани по-късно, могат изтеглете от страницата на проекта автор (AlexGyver).
Първо, нека се занимаваме електронен компонент. На себе си направете го сами направете такава красота у дома Необходими са следните компоненти:
- драйвер за RGB лента;
- RGB лента;
- Захранване 12V за лента RGB;
- Arduinо Nano.
Всеки от вас може да изтеглите и изтеглите фърмуера и да получите своето цифрово огнище. В този пример ще контролираме LED лентите от микроконтролера Ардуино Нано.
Да започнем с най-простото, нулево измерение - точка (или цяла лента от точки).
Това е най-обикновената RGB LED лента, която се захранва от 12V и има триканално управление за всеки цвят.
Използвайки PWM сигнала (имаме го 8-битов), можете да зададете яркостта на всеки цвят и по този начин да получите 16,7 милиона цветове и нюанси. Но ние се интересуваме от огъня, или по-скоро от неговата имитация. За да се симулира пламък, беше решено да се работи в цветовото пространство на hsv (цвят, наситеност, яркост).
Тези 3 параметъра ви позволяват да получите 255 основни нюанса, плюс всеки нюанс, за да направите 255 градации на насищане, т.е. се смесва с бял цвят. Е, третият параметър е яркостта, на прост език - смес от сянка с черен цвят.
Има няколко алгоритми за преобразуване от удобно hsv пространство в RGB, просто използвайте един от тях.
След това трябва да уточните поведението на пожара. Да предположим, че силата на пламъка е определено количество, което в минималната стойност дава на светодиодите наситен червен цвят и ниска яркост, а в максималната стойност дава бяло-жълт и максимално ярък цвят.
За да получим ефекта на пламъка, трябва да накараме тази стойност да прави произволни колебателни движения, движенията трябва да са произволни, но в същото време доста плавни, тоест нещо подобно на трепереща светлина. Следвайки тази стойност, съответно цветът и яркостта на пламъка по градиента ще се променят.
Авторът предлага да се реши този проблем по следния начин: има такъв много прост алгоритъм за филтриране, текуща средна стойност, която превръща рязката промяна в стойността в плавен процес, само един коефициент и сравнително просто изчисление.
Идеята е следната: необходимо е, да речем 5 пъти в секунда, да се зададе нова случайна позиция за стойността на пожара и някъде около 50 пъти в секунда да се филтрира тази стойност, постепенно да я променяте. В резултат на това се формира такъв случаен процес.
В пример от реалния живот всичко работи по предназначение.
Сега трябва да преведем стойността си в цвета на пламъка според споменатия по-горе закон и да получим едноизмерен огън.
Програмираната по този начин LED лента може да бъде скрита например от дънната платка или от някаква издатина. Също така такава панделка може да осигури фоново осветление, изглежда доста интересно и необичайно.
Също така лентата може да бъде изпратена на пода от малко разстояние и по този начин да постигнете доста интересен ефект.
И разбира се, парче лента може да се използва за осветяване на камина или да я симулира. И ако премахнете яркия цвят от жълто до оранжево, получавате имитация на тлеещи въглища.
Тъй като имаме RGB лента, можем да направим всеки цвят огън сам. Искате мъртво зелено - толкова лесно!
Имаме нужда от вълшебно син огън - няма проблем!
След това инсталирайте програмата и драйверите, както е написано в инструкциите на страница на проекта, изтеглете и стартирайте фърмуера.
В самото начало има всички необходими настройки. С тяхна помощ можете напълно да персонализирате огъня за себе си, а именно: цвят, поведение и други подобни.
Всъщност това беше най-лесният начин да накарате LED лентата да "изгори". Сега нека разгледаме по-интересните примери. За по-нататъшна работа ще ви трябва адресна лента.
Тази лента ви позволява да контролирате индивидуално всеки от нейните светодиоди и всеки включва един от 16,7 милиона цветни нюанса.
Всичко е свързано много просто, според тази схема:
Не са необходими драйвери, но се препоръчва резистор. Можете да направите без него, но има вероятност от изгаряне на първия светодиод и ако това се случи, тогава и следващите няма да работят.
При директно осветление, например, под дивана, получавате отличен адски диван с ефект на тлеещи въглища.
Също така такава лента може да бъде прехвърлена в обикновена лек профил и използвайте като независим елемент от интериора.
Изглежда доста добре, съгласете се, но все пак нека се опитаме да постигнем отделни пламъци.
Ще оставим алгоритъма същият. Разбиваме лентата на зони с различна ширина, всяка зона ще има свой собствен случаен процес. За да направим този процес още повече като истински пламък, ще запълним зоните от ръбовете до центъра, като постепенно увеличаваме нашата случайна стойност до текущата му стойност. Също така в процеса на "изгаряне", размерът на зоните също трябва да се променя на случаен принцип.
Ето как изглежда:
Сега нека разгледаме още един интересен случаен процес, наречен Perlin noise, който Кен Перлин измисли през 1983 година.
Perlin шум ви позволява да създавате произволно плавно разпределение на величината в произволен брой измерения. Добре известният облачен филтър във Photoshop е пример за двуизмерен шум от Перлин.
Но триизмерният шум на Перлин позволява да се генерира например планински пейзаж, освен това да се генерира много случайно и безкрайно и в същото време практически без да създава натоварване на компютърните компоненти, тъй като алгоритъмът там не е много изчислително скъп.
Планът на действие е следният: първо създаваме двуизмерен регион на Perlin шум и ще се движим по него по определен начин, сканирайки линията на пикселите и извеждайки я към светодиодите.
Алгоритъмът, както беше споменато по-горе, не е много сложен и Arduino спокойно се занимавайте с него.Резултатът е толкова много готин ефект, колкото е възможно по-гладък, случаен и вече много подобен на истинския пламък с крайно осветление.
При директно осветление изглежда така:
Но всичко това бяха алгоритми за пожар за една лента. А какво да кажем да залепите лентата в зигзагообразен модел и да се опитате да направите двуизмерен огън върху матрицата?
Такива матрици могат да се купят от китайците. Над матрицата поставяме дифузор и стъкло, оцветено с автомобилен филм, тоест това е истински дисплей с амолеада с ниска разделителна способност.
Между другото, изглежда доста реалистично. Вижте оригиналното видео на автора за повече подробности:
Това е всичко. Благодаря за вниманието. Ще се видим скоро!