Говорится: "как встретишь новый год, так его и проведёшь". Вот и решил его встретить с новым, особым устройством! А устройство это - гирлянда для мини-ёлки (есть такие пластиковые), но не простая гирлянда, а полноцветная! Это значит, что каждая лампа может принимать любой цвет. В роли ламп естественно полноцветные светодиоды, всего их 16. Пришлось несколько потратиться, но результат того стоит. А главное в том, что прошивку управляющего МК я построил так, что даже незнающий МК человек может создать свои полноценные эффекты. Но, обо всём по порядку.
Начнём со схемы устройства. Самое сложное в ней - собрать матрицу светодиодов 12*4 (ууу.. вот, где нужно максимум терпения и усидчивости), остальное это МК Atmega8, её задающий кварцевый генератор и 4 ключа на полевых транзисторах. Схема приведена ниже.
Ничего особо сложного в ней нет. Ограничительные резисторы для нормальных диодов одинаковы, а для "корявых" подбираются до свечения наиболее близкого к белому.
Вот пара фоток того, что получилось:
А теперь о прошивке. Она построена по принципу многозадачности. ШИМ и мультиплексирование выполнены в таймере и независимы от хода основной программы. Задаются цвета через область статической памяти с начальным адресом vmem. Там расположены поочерёдно ячейки цвета RGB1, RGB2, RGB3 и.т.д. Для удобства построения сдвиговых эффектов адрес выбран так, что находится посередине восьмибитного диапазона. Это значит, что можно использовать соседние ячейки в своих целях с помощью младшего регистра указателя. Также есть 2 паузы, реализованные во втором таймере, с их помощью легко можно установить задержки исполнения эффектов. В начале программы введена таблица яркости - то есть соответствие конечной яркости свечения линейной зависимости в программе. Реальная яркость диодов варьируется от 0 до 255 единиц. Чтобы получить равномерное распределение для глаза используются 64 цвета на канал. Значения получены из формулы y=x**(1,5). Считал в EXCELе.
В архиве с прошивками, которые можно скачать в самом низу этой странице есть 2 файла:
Full_v.bin
Base_v.asm
Первый, это полная версия с забитой программой свечения, Второй, это заготовка для написания световых эффектов. Во втором, для примера, реализовано 2 эффекта, а именно плавное зажигание гирлянды белым цветом и случайное поцветное гашение. Эти эффекты можно стереть и писать свои.
Основная программа начинается с метки main. Наиболее простой вариант - это непосредственный ввод цветов (команды st, sts) в отображаемую область памяти vmem.
В программе есть две паузы wait1 и wait2. перед их вызовом необходимо загрузить в регистр tmph значение задержки. Связь между паузами такая: wait2=255*wait1.
Отдельное слово о переменном резисторе R1. Изначально он должен был регулировать скорость исполнения, но при нулевом значении АЦП, контроллер намертво виснет. Подпрограмма обработки прерывания от АЦП оставлена, так что, если очень хочется, дерзайте)))
Файлы:
Прошивка МК (с исходниками)
Видео с демонстрацией работы (0,5Мб)