|
Теги статьи: |
Ёлка. Random flash
Автор: Albert_V
Опубликовано 11.11.2014
Создано при помощи КотоРед.
________________________________________________________________
Хорошо, что жена попалась строгая и авторитетная.
Как-то под Новый год она послала…
...
Ну, в общем, послала его за ёлкой.
Уж послала, так послала…
А то, говорит, кто ж это на Новый год – и без ёлочки?
А?!?!?!
«Падал прошлогодний снег» (А. Татарский, С. Иванов, С. Садальский) ©
________________________________________________________________
А дело было так…
30-го декабря подарили на работе искусственную ёлку высотой ~35 см (без игрушек).
Покупать китайские гирлянды или игрушки не было ни времени, ни желания.
Хотелось что-то сделать ‘нестандартное’, ‘ненадоедливое’ и, главное, быстро (к Новому Году).
Что получилось – судить Вам.
Сразу отвечу на вопрос ‘Почему был выбран PIC18F25K22?’. Просто за день до Нового Года это единственное, что у меня оказалось под рукой.
Но, программа написана так, что её очень просто подправить для любого (VDD=5V) PIC16/PIC18 с 12-тью свободными выходами.
Если у Вашего контроллера нет ‘Internal Oscillator’ – придётся поставить два конденсатора и кварц (на схеме обозначено 'Optional') и указать в тексте программы частоту кварца (параметр ZQFREQ).
Если потребуется – поставьте драйверы светодиодов (из расчёта, что в любой момент времени может быть включен только один светодиод).
Блок питания +5V на схеме отсутствует, так как проще всего использовать обычное (USB) зарядное устройство для мобильного телефона или, на свой страх и риск, USB-порт.
Конечно же, число резисторов можно сократить до 4-ёх, перенеся их с линий COLx на ROWx.
Основа эффекта – счётчик с переменным коэффициентом деления и два генератора псевдослучайной последовательности (ГПСП), реализованные на основе линейного регистра сдвига с обратной связью (Linear Feedback Shift Register (LFSR)). Длина первого – 23 бита с отводами от 4-го и 22-го выхода, второго – 28 бит с отводами от 2-го и 27-го выхода.
С одного из них 'защёлкиваются' данные для COLx (3 бита) с другого – ROWx (2 бита). Так же, 'перекрёстно', с них 'защёлкиваются' данные для изменения времён эффекта (если значения параметров TIMEHOLD_H и (или) TIMEHOLD_L равны '0').
Если попробовать перевести алгоритм программы в 'железо' – условно его можно представить так:
ZQFREQ и TIMELEDFLASH – названия параметров в 'шапке' программы.
На графике указаны названия параметров в 'шапке' программы:
Видео эффекта* + Аркадий Хоралов и Новые Самоцветы "Новогодние Игрушки"
*Поскольку время 'вспышки' светодиодов ~8.2 ms (параметр TIMELEDFLASH=8) и минимальное время между 'вспышками' ~10.24 ms (параметр LIMSPEED_UPPER=10), видеокамера не может передать этот эффект 'как есть'.
В оформлении ёлки использованы SMD светодиоды:
В архиве - исходники (*.asm) + прошивки (*.hex) для PIC18F25K22 (Internal Oscillator) и PIC16F876 (ZQ1 F=4MHz).
CONFIG контроллеров – в тексте программ и, соответственно, в файлах *.hex.
Если ПО Вашего программатора не 'понимает' CONFIG в файле *.hex – также в архиве есть информация о том, как должны выглядеть настройки CONFIG (копии окон программатора Triton).
Для других контроллеров PIC16/PIC18 Вы сами сможете изменить программу.
В текстах программ есть комментарии, которые помогут Вам достаточно легко это сделать.
Файлы:
Архив
Все вопросы в Форум.