
- Цена: $1.54
Собственно была заказана у узкоглазых звёздочка для ёлки. В лоте есть выбор размеров всё как в советские времена: изделие №1 №2 №3 я заказал №2. Размер от кончика до кончика звезды 18см.
Звезда выполнена из прозрачного ломкого пластика, на поверхности много граней для преломления света.
Собственно всё просто: две одинаковые половинки, сердцевина с электроникой, ножка-крепление для верхушки и переключатель.
Так это выглядит во включенном состоянии.
Тут можно было бы завершить обзор, но так легко, дорогой читатель, тебе не отделаться)))
Я решил что хочу лучшего и я знаю как это получить из этого простого кусочка пластика. Да да вполне предсказуемое решение WS2812B — просто и красиво, но тут у меня свой подход.
1)Я не буду применять arduino или ESP.
2)Мне не нужны всякие ИК-приёмники, WIFI или Bluetooth, я не собираюсь сидеть под ёлкой и переключать цвета, это задача ПО.
3)Устройство будет выполнено на одной плате, а не из говна и палок разных модулей проводов и термоклея.
4)Я буду использовать PIC18F46J50 и сам напишу весь код на mikroC.
В общем такой олдскульный подход )))
Первым делом измеряем звезду и создаём плату в Altium.


















После всех мучений бинго.
Теперь осталось написать программу.
Требования простые много эффектов и рандомность их выбора. Для управления светодиодами я применял SPI подробнее под спойлером.


После того как разобрались как управлять конфигурируем микроконтроллер и пишем несколько функций
Обновление звезды — вывод «видеопамяти»
Установка цвета определённого пиксела (для удобства я ввёл систему координат кольцо звезды и лучь)
Копия цвета пиксела
Установка цвета всей памяти,
Установка цвета луча,
Установка цвета кольца,
Вращение лучей,
«Втягивание» и «отталкивание» колец относительно центра звезды.
Эти 8 функций позволяют создавать различные эффекты.Применяя рандомность и математику я создал 15 различных режимов.Для произвольной генерации эффектов и выбора последовательности эффектов, я применял псевдорандом(генерация случайных чисел), для избежания повторений при повторном включении можно задать начальную точку генерации для этих целей я использовал сумму ячеек видеопамяти сразу после начала работы микроконтроллера когда в ней содержится различная произвольная информация.
В итоге вот что у меня получилось.
Ну пожалуй на этом можно откланяться надеюсь тебе дорогой читатель понравился обзор.А на десерт праздничная гифка)
(c) 2017 Источник материала