Ко мне обратились несколько форумчан, купивших РГ Никитина с ДУ и желающих управлять дополнительной периферией с того же пульта. Поэтому я решил сделать несложный проект на ATmega48, декодирующий команды ДУ формата NEC и включающий один из 12 выходов.
Микроконтроллер ATmega48 имеет 22 вывода общего назначения, которые я распределил следующим образом.
1 вывод – ИК фотоприемник
1 вывод – светодиод
8 выводов – кнопки (обозначены на схеме Buttons 1 – 8)
12 выводов – выходы (обозначены на схеме OUT1 – OUT12)
К устройству можно “привязать” 12 кнопок (по кол-ву выходов) любого пульта NEC формата. Каждая кнопка пульта (назовем их кнопки 1 – 12) включает или выключает одноименный выход устройства. Кнопки 1-8 устройства дублируют кнопки 1-8 пульта.
Программа выполнена вдвухтрехчетырех вариантах (файлы IRConrt1, IRContr2, IRContr3 и IRContr4.7z)
IRContr1:
Исходное состоянии всех выходов – лог.0
Выходы 1 - 8 работают “с защелкиванием”, т.е. первое нажатие кнопки 1 - 8 включает выход, повторное выключает.
Выходы 9 - 12 переводятся в единичное состояние при нажатии и удержании кнопки 9 - 12 пульта и возвращаются в нулевое состояние при отпускании кнопки. Эти выходы можно использовать, например, для вращения моторизированного переменника.
IRContr2:
Исходное состоянии всех выходов – сконфигурированы как входы с внутренними резисторами “подтяжки” к +5V.
При нажатии и удержании кнопки 1 - 12 одноименный выход переводятся в нулевое состояние (замыкается на корпус) и возвращается в исходное состояние при отпускании кнопки. В этом варианте выходы устройства можно подключить параллельно кнопкам (при условии что один вывод кнопки заземлен) какого либо аппарата, не имеющего своего пульта.
IRContr3: см. пост 7
IRContr4.7z: см.пост 23
Для привязки пульта необходимо подать питание, удерживая нажатой кнопку 1 устройства. Через 4 секунды светодиод 3 раза мигнет – Вы вошли в режим привязки. Далее нужно просто последовательно нажать привязываемые 12 кнопок. Нажатие каждой кнопки сопровождается миганием светодиода. Кол-во миганий соответствует номеру кнопки. Если вместо привязки очередной кнопки пульта нажать кнопку 1 устройства, код данной кнопки затирается. Если Вы ошиблись, процедуру привязки нужно повторить сначала. После привязки 12-й кнопки устройство переходит в рабочий режим.
Светодиод, помимо привязки пульта, используется для индикации нахождения микроконтроллера к активном режиме. Когда он погашен, МК переведен полностью в статический режим с остановленным тактовым генератором.
Для прошивки AVR микроконтроллеров не обязательно иметь программатор. Достаточно подключить МК к параллельному порту компьютера 5-ю проводками. Подробнее здесь http://real.kiev.ua/avreal/
Прошивка (файл с расширением hex), находится в архиве в папке exe.
При программировании контроллера, необходимо также поменять состояние 2-х фьюзов, выставив:
CKDIV8 – off
BODLEVEL1 - on
Программа написана на С для компилятора CodeVisionAVR (ver.2.03.9) демоверсию которого (ограничение на размер кода 3kB) можно скачать с оф. сайта http://www.hpinfotech.ro/
Размер сабжевых прошивок около 1kB.
Для желающих освоить программирование МК рекомендую книгу А.В.Белов “Самоучитель разработчика устройств на микроконтроллерах AVR” Наука и Техника, Санкт-Петербург 2008.
Если Вы слегка поменяете алгоритм, взяв за основу данные программы, прошу выкладывать модернизированный вариант вместе с исходниками - он может пригодиться другим.
Социальные закладки