Ёлка. Random flash
Автор: Albert_V ________________________________________________________________ Хорошо, что жена попалась строгая и авторитетная. «Падал прошлогодний снег» (А. Татарский, С. Иванов, С. Садальский) © ________________________________________________________________
А дело было так… 30-го декабря подарили на работе искусственную ёлку высотой ~35 см (без игрушек). Покупать китайские гирлянды или игрушки не было ни времени, ни желания. Сразу отвечу на вопрос ‘Почему был выбран PIC18F25K22?’. Просто за день до Нового Года это единственное, что у меня оказалось под рукой. Если у Вашего контроллера нет ‘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). Для других контроллеров PIC16/PIC18 Вы сами сможете изменить программу.
Файлы: Все вопросы в Форум.
|
|
|||||||||||||||
|
||||