На Новый год елка наряжается игрушками, гирляндами, бегущими огнями... Световые эффекты очень украшают елку, делают ее романтичной, незабываемой. В этой главе рассмотрено простое световое устройство, которое можно вмонтировать в любую старую звезду или шар для украшения елки. Схема (рис. 2.1) состоит из микроконтроллера AVR семейства Tiny от компании Atmel [3], дешифратора двоично-десятичного кода в десятичный, десяти светодиодов и резисторов, ограничителей тока.
Рис. 2.1. Схема для создания световых эффектов для новогодней елки
Микроконтроллер IC1 ATtinyl2 через равные промежутки времени формирует на выводах порта В РВ2-РВ5 двоичный код (согласно заложенному в программе алгоритму). Дешифратор VI преобразует двоичный код в десятичный, и тем самым открывает выходные буферы в определенной последовательности.
Светодиоды подключены к "плюсовой" шине и при нулевом состоянии на выходах дешифратора через них протекает ток, и они излучают свет. На выводах порта В микроконтроллера присутствует один внешний подтягивающий резистор R11 (это связано с альтернативным включением выводов).
Внимание!
В процессе разработки этого устройства автор допустил ошибку при составлении схемы И хотя ошибка не повлияла на работу устройства, после программирования микроконтроллера и ввода альтернативной функции вывода RESET микроконтроллер стало невозможно перепрограммировать обычным программатором. Если ошибку схемы не исправить, то модернизировать программу не получится. В основе схемы управления использован очень простой и дешевый микроконтроллер ATtmy12. Особенность ошибки заключается в альтернативной функции вывода RESET. Компания Atmel утверждает, что первый вывод микросхемы выполняет две функции: RESET — сброс и РВ5 — пятый вывод порта В (при условии подключения внешнего резистора). В симуляторе AVR Studio 4 при проверке программы, составленной автором, этот вывод выполняет все функции линии 5 порта В в полном объеме Однако после программирования программатором STK200 и сброса функции RESET дальнейшее перепрограммирование микросхемы невозможно Ошибку удалось исправить, изменив подключение вывода 6 микроконтроллера к выводу 15 дешифратора 7442 и изменив соответствующим образом программу. Вывод DIP переключателя S1 необходимо отсоединить.
Сборка показана на рис. 2.2, монтажная схема — на рис. 2.3, а разводка платы с двух сторон — на_рис. 2.4.
Плату можно изготовить путем травления или использовать макетную заготовку. Светодиоды на макетной заготовке необходимо расставить в том же порядке, что и на плате-оригинале. Необходимо соблюдать порядок подключения к дешифратору. Питание схемы — от источ-
ника +5 В (200 мА), подключение — проводами в центр платы (квадратные пистоны). Включение схемы на плате — DIP-переключателем. Светодиоды — любые с током до 20 мА.
Программа имеет упрощенную структуру с тремя светоэффектами и простым алгоритмом работы. Рассмотрим алгоритм.
1. При включении питания происходит обнуление всех параметров.
2. Опрашиваются выводы порта В микроконтроллера.
3. Анализ введенной константы для задержки включения.
4. Последовательно выполняются подпрограммы задержки включения, выбора светоэффекта и выбора светодиода.
5. Переход в начало программы.
Первый светоэффект — бегущая единица, второй — мигание противоположных светодиодов по окружности, третий — реверс вращения.
В памяти программ микроконтроллера осталось много свободного места, поэтому можно придумать больше светоэффектов, которые реализованы в программе как статические переключения с частотой 2 Гц. В данном случае выбран микроконтроллер с внутренней тактовой частотой 1,6 МГц. В случае использования микроконтроллера с другой тактовой частотой частота светоэффектов изменится. При поднятии частоты выше 25 Гц светоэффекты будут иметь характер динамических, с подсветкой всех светодиодов.
Программа
Код программы на ассемблере представлен в листинге 2.1, а шест-надцатеричный код — в листинге 2.2. Настройка схемы не требуется — светодиоды должны сразу замигать.