Например TDA7294

РадиоКот >Схемы >Светотехника >Бегущие огни и световые эффекты >

Матрица 4х5 с эффектом "волны" на Tiny13

Автор: Engineer Keen
Опубликовано 09.08.2013.
Создано при помощи КотоРед.

Предыстория задумки такова. На носу новый год, мама (работает воспитателем в детском саду) попросила сделать какой-нибудь световой эффект вроде полярного сияния для иллюстрации к сказке "Цветик-семицветик" (если кто забыл, там есть сценка на северном полюсе). Ну что ж, можно и попробовать. Первым делом пошел на ютуб, глянуть как оно на самом деле выглядит. Если кто в живую не видел - рекомендую ознакомиться, впечатляет! Ключевые слова - aurora borealis. Основной принцип, который как я подумал, можно будет относительно несложно реализовать - возникновение и распространение "волны" света случайной формы и направления. Совершенно неслучайно на полке валялась без дела прошлогодняя конструкция к сказке "Серебряное копытце". Это был домик на картонке, покрытый ватой, в которой стояли светодиоды, несколько на крыше и несколько рядом, всего 20 штук, подключенные чарлиплексингом к Tiny13. Конструкция плавно мигала в случайном порядке. Для реализации задумки оставалось только перепаять светодиоды из непонятного пучка в матрицу 4х5 и переписать алгоритм мигания. Итак вот схема (линии подкрашены чтобы не запутаться):



Алгоритм работы следующий. По таймеру запускается процедура обхода всех 20 светодиодов, по очереди в 8 шагов, если яркость светодиода меньше "шага", то он не горит, иначе-горит, получается динамическая индикация + ШИМ в 3 бита (8 уровней яркости). После каждого цикла из 8 шагов происходит распространения "волны" - светодиоды "переднего фронта" увеличивают яркость, "заднего" - уменьшают. После случайного интервала времени (около 1-1.5 секунд) вызывется процедура генерации волны. В начале выбирается одна из крайних точек (из 14 крайних светодиодов), после чего выбирается одно из 4х случайных направлений, это повторяется, пока алгоритм не наткнется на уже горящую точку или за пределы матрицы. В конце процедуры определяется то самое случайное время, через которое процедура должна повторится. Иногда, если большинство точек горят на максимальной яркости происходит "сброс" этой самой яркости - вся матрица тухнет. Это сделано для исключения засветки всей матрицы на случай если интервалы генерации волны получатся слишком маленькими. В общем это дольше описывать чем увидеть своими глазами.

Видео

Конечно до полярного сияния этому эффекту очень далеко, да и как его передать на матрице 4х5, но в итоге получился эффект, который чуть интереснее чем простейшие мигалки и не требует никаких деталей кроме контроллера и светодиодов. Из-за того, что в качестве генератора случайных чисел используется 16 битный регистр сдвига с линейной обратной связью, а сама функция вызывается в генераторе волны произвольное число раз вариантов исходной волны и их последовательностей может быть огромное множество, Правда на маленькой матрице это не так сильно заметно.
Питать схему можно от любого источника 5-6В, тока она есть совсем немного, не более 40мА, так что даже кроны с кренкой на 5В хватит не на один час. Резистор на ресет можно не ставить, в таком применении я его нарисовал по привычке. Фьюзы стоят заводские (делитель на 8 убран программно). Флеш использован далеко не весь, так что можно закладывать и другие эффекты, если кто заинтересовался - форум работает и я там есть :)


Файлы:
Прошивка


Все вопросы в Форум.


Как вам эта статья?

Заработало ли это устройство у вас?

24 13 4
1 0 0