Брелок-нетеряйка на pic-контроллере

Брелок для поиска ключей

Каждый в своей жизни хотя бы раз сталкивался с проблемой поиска ключей. Особенно это актуально в спешке, когда каждая минута на счету. А тут, как на зло, невозможно найти ключи от квартиры или от машины. Приходится перерывать всю квартиру, чтобы их отыскать.

Если же у семейной пары есть маленькие дети, тогда такие поиски могут отнять гораздо больше времени, так как связку ключей можно найти в самом неожиданном месте. Из-за подобных розысков теряется драгоценное время и многие опаздывают на работу или важную встречу, иногда даже приходится все отменять и устанавливать новый замок, если запасных ключей нет.

Данный прибор способен стать настоящей палочкой-выручалочкой не только для личностей, которые отличаются повышенной рассеянностью, но и для пожилых людей.

Брелок для поиска ключей может реагировать на определенные звуки, например, свист или хлопок, издавая звуковой сигнал наподобие писка или световой в виде мигания.

Некоторые девайсы оборудуются специальными передатчиками, которые включают радиомаячки. При нажатии на передатчик осуществляется передача сигнала на приемник, который располагается на брелоке, вследствие чего последний издает звуковой или световой сигнал.

Брелок с функцией розыска ключей (“Key Finder“) обладает рядом преимуществ, которые выгодно выделяют его на фоне других устройств.

Основные преимущества данного приспособления:

  1. Небольшие размеры – такой девайс отличается компактностью и легкостью, так что он прекрасно располагается в кармане брюк или маленькой дамской сумочке.
  2. Нейтральное оформление – это устройство выполнено в лаконичном сдержанном стиле и отличается минимализмом. Поэтому оно превосходно подойдет в качестве незаменимой вещи для мужчины или женщины, для ребенка, подростка или пожилого человека.
  3. Позволяет с легкостью найти предмет, к которому прикреплен, так как он издает звуковые и световые сигналы, демонстрируя свое местонахождение, реагируя на ваш свист или громкий хлопок.
  4. Некоторые модели могут быть использованы в качестве карманного фонарика, так как оборудованы специальными лампочками, которые подсвечивают дорогу в темное время суток.
  5. Отличается длительным сроком эксплуатации, так как изготовлен из прочного пластика, который не трескается и не разбивается от падения на пол.
  6. Такое приспособление легко прикрепить на нужную вещь.
  7. Экономичный расход заряда позволяет использовать данный брелок для поиска ключей в течение длительного времени без замены батареек. На некоторых устройствах вам придется менять батарейки один раз в два года, а то и реже.

Главный недостаток этого прибора – ограниченный радиус действия, обычно он составляет порядка 50 метров, но может быть и меньше, если на пути сигнала находятся стены или другие перекрытия.

Такой минус с легкостью нивелируется, если не стоять на месте, а передвигаться в поисках пропавшего предмета (что мы обычно и делаем, чтобы не терять времени даром).

Видео-обзор брелка для поиска ключей смотрите ниже.

Существует несколько наиболее популярных моделей брелоков, которые используются для поиска ключей или других часто теряемых вещей. Такие варианты «поисковиков» получили огромное количество положительных отзывов от людей, которые приобрели данный товар и испытали его действенность и пользу.

Этот девайс очень востребован так как не требует особых навыков при использовании. Чтобы найти затерявшиеся ключи, достаточно громко засвистеть или захлопать в ладоши.

Устройство в ответ подаст определенный звук, похожий на писк, сообщив тем самым о своем местонахождении. Таким образом розыск ключей займет у вас минимум времени.

Используя данное приспособление, можно с легкостью определить местоположение любой вещи, животного и даже человека. Для этого достаточно зафиксировать локатор iTag “Anti-Lost” на предмете, который постоянно теряется, на ошейнике домашнего питомца или отдать его ребенку.

Необходимо установить на телефон определенное приложение, настроить передачу связи между двумя гаджетами (смартфоном и локатором). В приложении вы увидите, где располагается та или иная вещь, человек или животное.

В дополнение данный локатор оснащен функцией, откликающейся в виде светового сигнала или издавая громкий звук, благодаря чему поиск осуществляется намного быстрее.

Локатор iTag “Anti-Lost” прекрасно совмещается с операционными системами:

  1. IPhone 4, 5, 6;
  2. iPod;
  3. iPad.
  • На основе Android от версии 4.3. Брелок соединяется с телефоном с помощью технологии Bluetooth 4.0 и работает на батарейках-таблетках. Таких батареек хватает до полугода непрерывного использования устройства.

Локатор iTag “Anti-Lost” обладает рядом полезных функций:

  1. «Не забудьте» (Anti lost) – данная возможность позволяет рассеянным людям не терять ключи или другие небольшие предметы. Достаточно установить определенную дальность действия между смартфоном и вещью, на которой прикреплен брелок, например, диапазон от 5 до 50 метров. Как только расстояние между ними будет больше указанного вами, оба устройства издадут предупреждающий звук.
  2. «Поиск автомобиля» – отличная функция для водителей, которые паркуются на больших парковках или по долгу службы оставляют машину в незнакомом месте. Чтобы не тратить время на длительные поиски, нужно оставить брелок в автомобиле. Как только расстояние между устройством и телефоном станет очень большим и будет потеряна связь между ними, приложение самостоятельно зафиксирует время и координаты места разрыва. Также приложение предложит выстроить обратную дорогу до того места, где была прервана связь.
  3. «Удаленное управление» – локатор iTag “Anti-Lost” позволяет сделать селфи удаленно на свой телефон.
  4. «Антивор» помогает уберечь смартфон, кошелек или автомобиль от воровства.

Краткая инструкция по использованию данного устройства выглядит следующим образом:

  1. Нужно включить функцию Bluetooth на смартфоне.
  2. Вам потребуется установить и открыть приложение iTracing.
  3. Следует нажать кнопку, напоминающую лупу, чтобы найти привязанные к локатору предметы. На карте вы с легкостью найдете расположение потерянных вещей.

Отличие данного устройства от других приспособлений заключается в наличии дополнительного передатчика. По размерам этот элемент напоминает обычную пластиковую карточку, поэтому его можно положить в кошелек или портмоне, в карман пиджака или рубашки.

Брелок следует прикрепить к ключам, пульту телевизора или другому предмету. Как только вам нужно найти вещь, к которой был прикреплен радиобрелок, следует нажать на кнопку на передатчике.

Данный элемент отправит радиосигнал для поиска потерянного предмета. Принимая сигнал от передатчика, брелок начинает издавать звук и мигать.

Вам остается только подойти и взять потерянные ключи или другую вещь.

Действие радиосигнала составляет до 40 метров. Этой величины достаточно, чтобы найти брелок в квартире, доме или офисе. Если помещение отличается большой площадью, тогда придется переходить с места на место, и как только радиус будет достаточный для передачи сигнала, Finder издаст характерный писк и световое мигание.

Экономичное расходование батареи позволяет пользоваться устройством в течение 2 лет.

Встроенная технология поможет вам не перепутать ключи, так как брелок откликается только на конкретный передатчик.

Пользователи высоко оценили разнообразные модели брелоков для поиска ключей. Покупатели, которые приобрели данное устройство говорят, что они забыли, что такое постоянные поиски ключей или пульта от телевизора.

Модели со свистком пользуются особой популярностью у мужчин, так как для того, чтобы найти потерянный предмет, достаточно лишь громко свистнуть, и вещь в ответ откликается.

Приверженцам передовых технологий полюбился локатор iTag “Anti-Lost”, так как он позволяет не только находить ключики, но и делать удаленно селфи-фотографии.

Источник: http://wlooks.ru/breloki/dlya-poiska-klyuchej/

RGB контроллер с дистанционным управлением на PIC12F683

Дата публикации: 12 июля 2012.

Рейтинг:  4 / 5

2 — режим би-цвета, когда в формировании цвета могут выступить только два основных цвета, комбинации можно выбирать вручную или они переключаются автоматически в динамическом режиме.

3 – полноцветный режим, когда в формировании цвета применяются все три цвета. Цвета изменяются по синусоидальному закону и их амплитуды сдвинуты на 120 градусов.

4 — режим для управления белым светом, когда яркость всех  трех каналов изменяется синхронно. Этот режим только при использовании RGB-светодиодов (ленточек).

Для эффективности управления при переключении из динамического режима в статический, контроллер будет сохранять текущий баланс цветов. Т.е. если Вам понравилось цветовое сочетание, то достаточно нажать кнопку и цветовая картинка остановиться и понравившееся освещение не будет изменяться.

Очень большое распространение получила декоративная подсветка в ландшафтном дизайне. Подсветка растений, аллей, водоемов. Внутри квартиры очень привлекательно смотрится декоративная подсветка узорчатого стекла.

Схема контроллера управления освещением с ДУ

В основе конструкции лежит PIC-микроконтроллер PIC12F683 фирмы Microchip. Светодиод LD1 предназначен для индикации приема сигнала от ИК-пульта. На плате сделана возможность установки двух типов ИК-приемников. TFMN5360 или любого другого выводного. Обратите внимание, что для RC-5 кодировки необходимо приемники с несущей 36 кГц.

Для защиты стабилизатора от подключения с неправильной полярностью применен диод D1. В качестве силовых ключей используются n-канальные полевые транзисторы с логическим уровнем управления. Резисторы R8 — R9 предназначены для возможности выполнять внутрисхемное программирование контроллера, чтобы емкость затвора не влияла на сигнал программатора.

Соединитель CON1 применяется для внутрисхемного программирования.

Печатная плата и монтажная схема контроллера

Монтажная плата предусматривает установку двух типов ИК-приёмников TFMN5360 или фотоприёмников типа TSOP48. Хочу обратить внимание, что для увеличения чувствительности (или зоны покрытия) можно параллельно устанавливать несколько  фотоприёмников.

Сборка контроллера

Сборка контроллера сложности не представляет. В первую очередь паяем микросхемы и транзисторы, затем конденсаторы и резисторы. В последнию очередь разъемы.

Описание программы

Работа программы обсуждается но форуме http://forum.e-voron.dp.ua/.

Замена комплектующих

В качестве выходных ключей можно применить любые полевые n-канальные транзисторы с логическим уровнем управления. С рабочим напряжением не ниже 20 V для работы с питанием в 12 V и 40 V для работы с питанием 24 V. Если устройство предназначено для использования в бортовой сети автомобиля (12 V) необходимо выбирать параметры для 24 вольтового питания.

Пульты дистанционного управления

Протокол RC-5 Philips получил широкое распространение в дистанционным управлении. Поэтому в продаже можно найти большое количество готовых пультов ДУ, которые можно использовать для подобного типа устройств.

Подключение RGB-контроллера к светодиодам

Защитный диод желательно устанавливать в том случае, если планируется эксплуатация устройства в автомобильной сети.

Источник: open.e-voron.dp.ua

Архив для статьи “RGB контроллер с дистанционным управлением на PIC12F683 “
Описание: Исходный код(Ассемблер), файл прошивки микроконтроллера, описание устройства(PDF), сборочный чертеж платы(PDF)
Размер файла: 233.5 KB Количество загрузок: 1 856 Скачать

Источник: https://radioparty.ru/device/microchip/389-rgb-ir-controller-pic12f683

Многофункциональный брелок

Источник: http://diod.ucoz.ru/publ/mikrokontrollery/skhemy_na_mk/mnogofunkcionalnyj_brelok/4-1-0-11

Устройства на микроконтроллерах семейства PIC

Сенсорная кнопка включения ПК.                                               

МЕГА ИК ПРИЕМНИК НА 35 КАНАЛОВ.

Свет и вытяжка в санузле.

12 командный ИК приемник на PIC12F629

ИК управление электро приводом -2. 

Сенсорный кодовый замок. 

Авторские устройства на микроконтроллерах семейства PIC.

Автор  RGB.

Сайт http://rgb73.mylivepage.ru

Сенсорная кнопка включения ПК.

Когда ПК выключен ничего не горит и не работает.

При касании сенсора подсветка откликается короткой вспышкой, далее замыкаются контакты 
реле  и остаются в замкнутом положении до тех пор, пока  на  2 ноге МК не появится пониженный  до +5 вольт сигнал с +12 вольтовой шины  БП компьютера, как  только сигнал получен контакты реле размыкаются,  и плавно включается подсветка  сенсора. Если напряжение +12 вольт не появилось в течение -2 секунд, реле выключается, и подсветка двойным миганием показывает код неисправности, для сброса 
нужно обесточить компьютер.  Для выключения  достаточно зажать сенсор на 3 секунды и МК произведёт жесткое выключение ПК. При этом контакты реле замыкаются и держатся до тех пор, пока на 2 
ноге  не пропадёт сигнал +12вольт с БП компьютера.  Как только +12 вольт пропали, сенсор отпускает контакты реле и выключает подсветку.

Для контроля работы сенсора во время удержания подсветка мигает.  Схему вешать на питание дежурной линии стенбай в 5 вольт. При программном выключении компьютера подсветка потухнет, как только пропадет 12 вольтовое питание.

Схема. 

Прошивка для 12F629 и 12F675 

МЕГА ИК ПРИЕМНИК НА 35 КАНАЛОВ.

МК PIC16F887

Поддержка пультов с протоколом NEC. Первой записываем  «Мастер» кнопку на пульте. Используя ее, включим режим перезаписи кнопок пульта в память МК. Далее  записываем 35 выбранных кнопок на пульте ДУ.

 Соответствие записываемых команд к ножкам МК, первая команда принадлежит ноге 2 и так далее по кругу против часовой стрелки, пропуская ножки питания МК  (свежее запрограммированный МК сразу после  подачи питания готов к записи команд с пульта в свою память).

После подачи питания светодиод с 2 ноги три раза мигает и МК готов к записи, при проведении  записи кнопки, он же мигает, говоря о проведении записи, после записи последней 35 кнопки его свечение немного длиннее. Когда он потухнет МК готов к работе.

В памяти EEPROM можно настроить режим работы каждой ножки в режим переключения или удержания. Для этого начиная с адреса 02 EEPROM по 06 адрес необходимо записать правильные числа, которые получаем следующим способом. Ножки «сгруппированы» по 8 штук, так как в одном регистре памяти EEPROM в МК всего 8 бит.

Допустим, мы хотим, чтоб первые три ножки работали в режиме удержания, а остальные 5 в режиме переключения. Записываем число 1 для ноги, которая будет работать в режиме удержания и число ноль для режима переключения.

Отсюда получаем такой вид числа в двоичной системе 00000111 – первая ножка считается справа налево, данное число нужно перевести в шестнадцатеричный вид, что в данном случае легко, но может потребоваться конвектор чисел. Получаем число 07 в шестнадцатеричном виде готовое к записи в программаторе. Также поступаем и для настройки остальных выводов.

В текущей прошивке все выводы настроены в режиме удержания (записаны числа -FF). В последней ячейке по адресу 06 памяти EEPROM используем только три первых бита, остальные не используются (00000111).

Схема и прошивка.

Свет и вытяжка в санузле.

Девайс предназначен, для управления включения света и вытяжного вентилятора, в санузле.

В выключенном режиме подсветка выключателя постоянно светится.

При включении выключателя происходит плавный розжиг лампы освещения (продлеваем срок службы лампы), после чего сразу включается вытяжной вентилятор. Подсветка начинает мигать, сообщая, что помещение занято.

Если забыли выключить свет, он автоматически выключится через час и подсветка потухнет, чем сообщает причину выключения. 
Выключатель необходимо вернуть в положение – выключено, сразу включится подсветка, после чего можно снова использовать в штатном режиме.

  После ручного выключения света подсветка переходит в штатный режим (светит постоянно), вытяжной вентилятор работает еще три минуты.

Конструктивно схема рассчитана на прокладку новой проводки,
 что и сделал мой кум при постройке санузла.

Схема.  

Прошивка, схема. 

  Второй вариант прошивки для экономок, схема стала проще. Схема. Прошивка. 

12 командный ИК приемник на PIC12F629

Устройство позволяет записать в память МК 12 команд с пульта ИК и их прием отображать на своих выводах в двоичном виде в режиме удержания кнопок, после отпуска кнопки пульта на выходах МК будут нули.

Для управления драйвером подойдет любой ИК пульт от бытовой техники с протоколом NEC. Дальность приема зависит от места установки приемника и используемого пульта.

Как определить пригодность пульта и запрограммировать кнопки. На схему подаем питание, светодиод на плате три раза «мигнет»  говоря о готовности к записи.

Читайте также:  Драйверы для управления светодиодами с микрофоном и низковольтным питанием

Далее нажимаем  поочередно 12 кнопок во время программирования при нажатии очередной кнопки светодиод на плате « вспыхивает»  сообщая  об  успешной записи.

По окончанию программирования светодиод  три раза мигнет и больше не реагирует на  прием команд,  а переходит в режим сканирования кнопки.

 
Если произведен не правильный набор команд  или для смены пульта, необходимо нажать кнопку на устройстве и повторить набор, кнопка активна  только после завершения ввода всех команд.

Вывод данных в двоичном виде на ногах 7-6-5-3. То есть, выводится номер, принятой команды в соответствии очередности их записи. Первая записанная команда принята – выводится число 1 и т.д. В режиме покоя на выводах 0000.

Схема.  Прошивка.

ИК управление электро приводом -2.

Упрощенный вариант.

Устройство предназначено для управления электроприводом исполнительного устройства выполняющие действие открытия и закрытия любого механизма, например ворот, штор, выезд телевизора и т.д. Определение выполненного действия происходит с помощью двух концевых выключателей, которые  в свободном положении нормально разомкнутые.

Программа ИК приемника универсальная поддерживает практически все протоколы пультов. Запись пульта можно провести, если с состояния выключенного питания нажать и удерживать кнопку «запись пульта» после подачи питания отпустить и нажать на пульте выбранную кнопку.

Кнопку пульта необходимо удерживать белее трех секунд, после отпуска кнопки устройство готово к использованию, код кнопки запишется в память МК и повторной записи не потребуется, если было отключено питание устройства (для перезаписи кнопки пульта процедуру нужно повторить). 

  Если во время движения привода пропадет питание, то после восстановления и подачи команды первым действием будет возврат привода в закрытое состояние до  замыкания «домашнего» концевого.

Прошивка.

Сенсорный кодовый замок.

Видео http://www.youtube.com

Схема.

Плата.  

  

По умолчанию код- 12345, для установки своего кода нужно в EEPROM с адреса 00h по 04h записать свой код, пять цифр. После правильного набора кода на 7 ноге МК появляется сигнал на три секунды. На плате транзистора под ключ реле не разводил. Для ноля пишем число 10, для Z- 11 и для R-12 ну а числа так и идут с 1 по 9.

Схема и прошивка

Несколько улучшенная прошивка, исправлен ПИН код, теперь можно в любой последовательности выбирать цифры для кода. Улучшен звук. И в архиве два варианта с разной чувствительностью сенсоров.

Хоть подобные схемы и рассчитываются на определение изменения емкости площадок сенсоров, но на работу устройства довольно сильно влияет применяемый блок питания и также помещение, в котором девайс будет работать.

Поэтому теперь есть возможность подобрать прошивку, работающую с лучшими показателями.

Прошивка V2

Изменения – есть возможность самостоятельно настроить время вывода сигнала на исполнительное устройство после правильного набора ПИН кода, производится изменением чисел в памяти EEPROM в ячейках идущих сразу после ПИН кода по адресу 05H и 06H.

Время можно вычислить по расчету Время в секундах= ADR_05H (1- ноль не записывать)* ADR_06H (50- цифры в десятичной системе)* 0.02 секунды = получаем задержку в 1 секунду.

Теперь еще индикации светодиода нажатой цифры с 8 ноги МК, как таковой нет, вместо этого на выводах 11-10-9-8 выводится число нажатой кнопки в двоичном виде, 8 нога младший БИТ и далее. 
 Использовав дешифратор типа 155ИД3 можно получить эквивалент каждой цифре свой выход (светодиод). 

P.S. Числа для записи в EEPROM надо конвертировать, программаторы не поддерживают десятичную систему исчисления.

Прошивка V3

http://ru.aliexpress.com/PIC12F629-DIP8

You have no rights to post comments.
Недостаточно прав для комментирования

Источник: http://sxem.org/2-vse-stati/82-USTROJSTVA-NA-MICROKONTROLLERAKH-SEMEJSTVA-PIC

Робот на контроллере PIC от SWG

Камрад SWG решил тоже побаловаться самобеглыми тачанками. И достал с антресоли давнюю разработку.Глядя на вашу бурную активность, я тоже решил шевельнуть ластами.

Достал со шкафа сделанную еще в 2006г простенькую тележку (к коробке от CD-ROMа прикручены 2 самодельных колеса, 2 движка ДПМ-25-Н1-7Т с редукторами (27v, но неплохо тянут уже при 12, надо будет больше — сделаю преобразователь 12->27), и самодельный поворотный узел с роликом (третье колесо).

… Потребление от 12v: 33 мА при выкл. двигателях, при макс. скорости без нагрузки (колеса не касаются пола) = 103 мА вперед, 115 мА назад. При одном заклиненном колесе — 300 мА, при обоих заклиненных колесах = 500 мА.

L293DN чуть теплая. Будет греться — приклею радиатор.

Да, частоту ШИМ взял пока 500 Гц. (период 2 мс). Померяю скорость нарастания тока в двигателях — определю более оптимальную (За самый короткий импульс ток в двигателе должен успеть достигнуть максимума).

Максимальная скорость движения по полу сейчас 15-20 см/сек. Больше мне пока ни к чему, слишком быстро будет комнату пробегать. Диаметр колес = 80мм (резиновые “бублики” вроде от какой-то сантехники, полно на базаре).
Честно говоря, я был сильно удивлен когда нагуглил характеристики движка ДПМ.

Почти все они, несмотря на весьма брутальную конструкцию, жрут довольно мало. Так что даже L293 их спокойно тянет. При этом они отличаются вполне сносным моментом и оборотами.

А также сделанную в том же году плату контроллера привода, которая в дальнейшем должна будет управляться уже от центрального контроллера, сама же имеет микроконтроллер PIC16F873 с двумя ШИМ; L293DN; MAX232 для RS232; стабилизатор LM2931(5v) для питания микросхем; маленькую пищалку; а также разьемы для подключения двигателей (и довольно сложные фильтры для них); разьем, на который выведен порт B, земля и +5v, для подключения датчиков и приемника радиоуправления; разьем RS232 (Для связи с компьютером и выдачи отладочной информации); разьем с шинами I2C и SPI (для связи в будущем с центральным контроллером и прочей периферией).
Мыслим похоже, даже более чем. У меня сходная архитектура. Только я SPI не выводил. UART да i2c и преобразовние на RS232 повесил на кабель. А так почти то же самое, только контроллер AVR, а не PIC

Многофункциональный брелок

Изначально данное устройство задумывалось только как электронный ключ на ИК лучах опять же для электронного дверного замка (тоже собственного изготовления). Но потом я захотел, чтобы устройство было более универсальным.

В результате получился компактный брелок, выполняющий несколько функций: 1. Термометр в диапазоне от -55°С. до 125°С. с шагом 0,1°С;2. Считыватель и эмулятор электронных ключей – таблеток DS1990 (память на 10 штук);3.

Дистанционный пульт управления на ИК лучах (реализована только команда “Сделать снимок”) для цифровых фотокамер “Pentax”;4. Светодиодный фонарик.Вспомогательные функции:1. Контроль напряжения батареи питания;2. Цифровая регулировка яркости индикатора;3. Протокол MODBUS-RTU для связи с ПК.

Выбор эмуляции данного класса устройств Touch memory и пульта ДУ был сделан исходя из того, что домофон и фотокамера у меня соответствующие.

Примечание: Поскольку здесь устройство представлено как самостоятельное, то в данной версии функция электронного ключа для замка отсутствует. Вместо неё введена команда “Выключение брелка”. Интерфейс для связи с ПК я ввёл для того, чтобы можно было просматривать и редактировать ключи, наблюдать температуру и т. п., но наружу я его не вывел и управляющей программы пока нет.

Устройство построено на микроконтроллере АТmega8-16AU, но лучше использовать АТmega8L-8AI(U). Для индикации используется трехразрядный светодиодный семисегментный индикатор с общим анодом и четыре дискретных светодиода (два красных, желтый и зелёный – по одному). В качестве температурного датчика использован DS18B20.

Управление осуществляется двумя кнопками, одна из которых сдвоенная (используется также для включения устройства, на схеме А1 и А2 разнесены для удобства). Разъем J1 предназначен для внутрисхемного программирования МК., J2 – для связи с ПК через адаптер TTL/RS-232.

Ниже приведена конструкция собранной платы с двух сторон.

При установке элементов питания схема обесточена. При коротком нажатии на кнопку “A” происходит подача питания через пару контактов сдвоенной кнопки. Затем питание брелка удерживается открытыми транзисторами Q7, Q6.

Если в течении 16 секунд не была нажата ни одна кнопка, то эти транзисторы закрываются и схема обесточивается. При этом ток потребления не превышает 0,5 мкА. При нахождении в режиме “Пульт ДУ” этот интервал составляет 30 сек., а при включенном фонарике – 1 минуту.

На плате много перемычек, просто не хотелось делать её двухсторонней.

Подключается программатор к разъёму J1 (стандартный шестиконтактный разъём для внутрисхемного программирования). При этом удобнее прошивать без батареек, но чтобы питание поступало от программатора.

FUSE-биты микроконтроллера DD1 должны быть запрограммированы следующим образом:CKSEL3…0 = 0011 – тактирование от внутреннего RC осциллятора 4 МГц;SUT1…

0 =10 – Start-up time: 6 CK + 64 ms; CKOUT = 1 – Output Clock on CKOUT запрещен;BODLEVEL = 1 – пороговый уровень для схемы контроля напряжения питания 2,7В;BODEN = 0 монитор питания включён; EESAVE = 0 – стирание EEPROM при программировании кристалла запрещено; WDTON = 1 – Нет постоянного включения Watchdog Timer; Остальные FUSE – биты лучше не трогать. FUSE-бит запрограммирован, если установлен в “0”. Необходимо прочитать из МК калибровочный байт для внутреннего RC осциллятора на 4 МГц и записать его в последнюю ячейку флэш памяти (1FFFh)

В первых ячейках EEPROM размещается настроечные параметры устройства. В приведённой ниже таблице описывается их назначение, которые можно менять в разумных пределах.

Небольшие пояснения по пунктам таблицы:1. Здесь указывается величина напряжения на батарее, при которой загорится светодиод, сигнализирующий о её низком значении. Я поставил 3,6V (параметр – 360). Если нужно другое, например 3,35V, то надо записать 335($14F). В ячейку по адресу $0000 заносится младший байт, соответственно в $0001 – старший. 2.

Поскольку я не установил на плату переменный резистор для подстройки точности измерения напряжения батареи ввиду отсутствия у меня такового малых размеров, то я ввел программную коррекцию.

Порядок калибровки для точного измерения следующий: вначале в ячейки EEPROM необходимо записать число 1024($0400), затем включить устройство, посмотреть на индикаторе напряжение, которое измерил брелок и тут же замерить вольтметром реальное напряжение на батарее.

Коэффициент коррекции вычисляется по формуле: K=Uр/Uи*1024 где Uр – реальное напряжение, измеренное вольтметром, Uи – напряжение которое, измерил брелок. После подсчёта коэффициента “K” его заносят в EEPROM. В ячейку по адресу $0002 заносится младший байт, соответственно в $0003 – старший. После калибровки у меня погрешность не превысила 3%.3.

Здесь задается параметр времени, через которое брелок отключится, если не происходят нажатия на кнопки. У меня стоит 20 (20*0,8=16 сек.) Если допустим надо, чтобы отключалось через 30 сек, то надо записать 30/0,8 = ~38($26). В 4 и 5 пунктах аналогично.

6. По адресу $10 хранится код семейства нулевого ключа, затем его 48 битный номер и CRC. И так 10 ключей последовательно.

Устройство питается от трех дисковых элементов A76 (LR44, G13, 357), суммарное напряжение 4,5V. Ток потребления при макcимальной яркости составляет около 30 мА, но я для экономии батареи установил на среднюю.

Плата разработана под корпус брелка промышленного производства под названием “КР-3”, но можно использовать другой подходящий по размеру корпус. Эмуляция ключей проверена на домофонах “VIZIT”.

Инструкция по эксплуатации находится в прилагаемых файлах.

Внешний вид устройства:

С левой стороны расположен термодатчик, заключённый в медную трубку. С правой стороны контакты считывателя/эмулятора в виде двух винтов, выступающих на разную высоту. Тот что короче – земля, а длиннее – данные. Рядом с ними располагаются светодиоды фонарика и ИК-пульта.

Автор устройства (схемы): Баталов Алексей aka Alex72

Связь с автором: Нет данных

Веб сайт автора: http://www.mcuprojects.narod.ru

Источник: http://radiokot.ru

Доп материалы, файлы к устройству (схеме):

Печатная плата в формате SL 5.0

Прошивка МК

Барахло для Proteus

Юзер-гат – инструкция по эксплуатации

Схема
Снизу
Сверху

Еще на этой платке (50×85×15мм) есть делитель напряжения батареи с подстроечником, подключенный к одному из каналов АЦП PIC16F873, для контроля напряжения аккумулятора (12v 1,3 А/ч, 95×40×50мм).
Ну и, конечно, разьем для подключения этой батареи. Для ускорения “оживления”, а также чтобы пощупать, что реально получилось, решил попробовать МикроПаскаль. На днях набросал несколько строк программки для инициализации ШИМ, UART, и простенький главный цикл, в котором проверяется состояние линий порта B, кнопки на которых пока задают команды “Вперед”, “Назад”, “Разворот на месте влево”, “Разворот на месте вправо”, “Скорость больше”, “Скорость меньше”. Отсутствие команд переводит в состояние “Стоп”.
При изменении коэффициента ШИМ в канал RS232 выдаю “#” и два байта — коэффициенты левого и правого ШИМ. Пока для начала оба меняю одинаково. Для того, чтобы задавать одним байтом значение ШИМ, ограничился интервалом 0-255. Подумывал даже сделать всего 16 ступенек, тогда бы одним байтом можно было бы хранить значения обоих ШИМ (в младшей и старшей тетрадах), но решил, что пока экономить рано.

При проверке кнопок сделал защиту от дребезга по 1мсек. Для замедления работы главного цикла ввел в него задержку 50 мсек. В дальнейшем эти процедуры опроса линий порта B и управление ШИМом посажу на многозадачное прерывание от таймера, которое будет обслуживать часы, календарь, и с десяток программных таймеров от милисекунд до секунд.
Еще один таймер, имеющий выход на С0, заведен у меня на пищалку, через сьемную перемычку, конденсатор и ограничительный резистор.

Сегодня зашил программку в микросхему, собрал все в кучку, включил — все работает, как и должно. (Естественно, только то, что уже написано в программе). Движки по командам крутятся вперед, назад, в разные стороны, ускоряют и замедляют вращение.При изменении параметров ШИМ вижу новые значения в компьютере (через “Гипертерминал”, на 9600 бод).

Просмотрел все сигналы осциллографом — все, как и должно быть.
Даже не интересно. Нет, чтобы помучаться, понастраивать… К сожалению, уже лет 20 лишен такого удовольствия. Обычно все работает сразу. Сказывается наличие опыта… Ничего, когда понавешаю датчиков, всех тех заморочек, что запланировал, вот тогда и начнется настоящая работа над машинным интеллектом.

Будет труднее, но интересней.

Я вот сейчас тоже хочу заказать парочку сонаров. Потом разведу плату датчиков и будет веселуха 🙂 Ну и попутно отладочный модуль делаю.

Немножко технических данных. Кварц пока поставил 4,0 Мгц. Это 1.000.000 команд/сек, для ровного счета. Будет мало — поставлю 8, 16 или 20. Микросхемы PIC16F873A и PIC16F876A на 20Мгц у меня есть, кварцы тоже.
Программа, хоть и на Паскале, заняла пока 583 байта (14%) ПЗУ, и 32 байта (18%) Озу.

Если поставить вместо 873 -> 876, у него памяти в 2 раза больше, остальное то же самое. Листинг программы, (не считая комментариев) = 110 строк. Скомпилированный в ассемблерный — раз в 5 больше. (с комментариями асс. листинг = 930 строк, Паскалевский — 180). HEX — код на эмуляторе (PIC Simulator IDE v6.65) пролетел без проблем.

Исходник прошивки на паскале.

Начало положено, продолжение следует…

Источник: http://easyelectronics.ru/robot-na-kontrollere-pic-ot-swg.html

Змейка и Тетрис на микроконтроллере

Увидел как-то интересный видеоролик в сети, в нем демонстрировалась игра змейка реализованная на микроконтроллере и светодиодной матрице 8х8, потом нашел еще несколько подобных роликов, которые заинтересовали меня.

Среди них также был ролик, где на “мощном” микроконтроллере была собрана игра тетрис.

После просмотра, я решил разработать собственный вариант устройства, в котором совмещены обе игры, с применением микроконтроллера PIC16F688 и двух светодиодных матриц, которые отображают игровое поле с разрешением 8х16 точек.

Схема устройства показана ниже. Вывод информации на матрицы H1, H2 в динамическом режиме осуществляется посредством сдвиговых регистров DD2, DD3, DD4. Выходы микросхем DD2, DD3 подключены к анодам матриц . Катоды обеих матриц подключены к коллекторам транзисторов VT1-VT8, управляющие сигналы для которых формируются микросхемой DD4.

Микроконтроллер загружает данные в регистр DD4, при переполнении которого, информация с 9 вывода передается на вход регистра DD3, далее таким же образом данные передаются на регистр DD2. Резисторы R1-R16 ограничивают ток через светодиоды матриц. Резисторы R17-R23 устанавливают ток базы транзисторов VT1-VT8.

Микроконтроллер работает на частоте 8 МГц от внутреннего генератора. Частота обновления изображения составляет 100Гц.

После подачи питания, на игровом поле отображается заставка игры “Змейка”. В верхней части поля высвечивается цифра 1, в нижней части представлено изображение фрагмента игры.

При нажатии на кнопку SB5 “Старт/Пауза”, выполняется переход в меню игры, в верхней части которого отображается уровень игры в виде цифр от 1 до 9. Уровень игры устанавливается кнопкой SB1 “Вверх”, при каждом нажатии происходит последовательное увеличения номера уровня на единицу. После цифры 9, снова высвечивается цифра 1.

От установленного уровня игры зависит начальная длина змейки, так для 1-го уровня длина составляет 3 точки, для 9-го 11 точек. В нижней части меню отображается информация о скорости движения змейки. Цифре 1 соответствует минимальная скорость, а цифре 9 максимальная. Значение скорости устанавливается кнопкой SB4 “Вниз” подобно установке уровня игры.

Свечение светодиодов по периметру поля в меню означает, что выбран режим игры с наличием границ по периметру поля. В этом режиме, при выходе змейки за пределы игрового поля наступает проигрыш. Если в меню, светодиоды по периметру поля погашены, то выбран режим без наличия границ.

В этом случае при выходе за пределы игрового поля, голова змейки появляется с противоположной стороны поля. Кнопками SB2 “Вправо” и SB3 “Влево” устанавливается требуемый режим игры. При первоначальном входе в меню игры, значение длины и скорости устанавливаются на единицу, выбирается режим с наличием границ.

После нажатия кнопки “Старт/Пауза” из меню игры, на игровом поле высвечивается змейка в базовом положении и случайная свободная точка. Нажатие любой из кнопок “Вверх”, “Влево”, “Вправо” приводит змейку в движение по соответствующему напрвлению.

После начала движения, для управления змейкой также становится доступна кнопка “Вниз”. При наезде на светящуюся точку, длина змейки увеличивается. После набора 14 точек происходит переход на следующий уровень игры. После 9-го уровня происходит переход на первый уровень.

В случае наезда змейки на собственное туловище, или выхода за пределы игрового поля в режиме наличия границ, наступает проигрыш. После 3-х проигрышей происходит возврат в меню игры, где указан текущий уровень игры и скорость.

После начала движения змейки, нажатиями кнопками “Старт/Пауза” можно приостановить и возобновить игру.

Для выхода из меню игры необходимо удерживать нажатой кнопку “Старт/Пауза” в течении 1 секунды, после чего на игровом поле высветится заставка игры. Переключение между играми осуществляется нажатием любой из кнопок “Вверх”, “Вниз”, “Влево”, “Вправо”. При этом высвечивается заставка соответсвующей игры.

В верхнй части заставки игры “Тетрис” высвечивается цифра 2, в нижней части представлено изображение фрагмента игры. Переход в меню игры осуществляется нажатием кнопки “Старт/Пауза”. В верхней части меню отображается количество баллов набранных игроком. Баллы начисляются за каждую удаленную строку.

Счетчик баллов ведет счет до 99, затем обнуляется, и счет начинается заново. При старте каждой новой игры, счетчик также обнуляется. В нижней части меню отображается информация о скорости движения фигур, которая устанавливается кнопками “Вверх”, “Вниз” соответственно.

После нажатия кнопки “Старт/Пауза” из меню, начинается игра, в верхней части поля появляются случайные фигуры, которые можно перемещать кнопками “Влево” и “Вправо” в соответсвующую сторону. Кнопка “Вверх” поворачивает фигуру на 90 градусов по часовой стрелке, при каждом нажатии.

Удерживая нажатой кнопку “Вниз”, можно ускорить движение фигуры. Кнопкой “Старт/Пауза” можно приостановить и возобновить игру. Игра заканчивается когда новая фигура не может поместиться на игровом поле, после чего происходит переход в меню, где можно просмотреть количество баллов набранных игроком.

Выход из меню выполняется также как в игре “Змейка”.

Если в течении 4 минут не была нажата ни одна из кнопок, то устройство переходит в режим пониженного энергопотребления, микроконтроллер отключает светодиодные матрицы, и переходит в спящий режим. Устройство “просыпается” после нажатия кнопки “Старт”, и возвращается в прежнее состояние.

В устройстве применены резисторы – типоразмера 1206 для поверхностного монтажа. Конденсаторы С2, С3 – керамические типоразмера 1206. Светодиодные матрицы H1, H2 – TOM-1088BG-B зеленого цвета свечения с диаметром светодиодов 3мм, и разрешением 8х8 точек. Кнопки стандартные тактовые.

Источник питания – стабилизированный блок питания напряжением 3,7-5В, также можно использовать гальванические элементы или аккумуляторы, например 3 последовательно соединненные батарейки по 1,5В типоразмера AA или AAA, я например использую 3 батарейки AA. Устройство сохраняет работоспособность при снижении напряжения питания до 3,3В, при этом уменьшается яркость свечения светодиодных матриц.

Источник: http://radiolaba.ru/microcotrollers/zmeyka-i-tetris-na-mikrokontrollere.html

Клон ИК пульта на PIC контроллере

В одной из предыдущих статей я рассказывал о способе считывания кода с ИК-пульта при помощи компьютера и звукового редактора. В этой статье речь пойдет об использовании полученной таким образом информации для создания клона ИК пульта управления.

Передо мной стояла задача построить некий клон пульта для управления кондиционером. Поскольку «родной» пульт был утерян, то пришлось искать аналогичную модель и считывать с нее коды управления. Поскольку особых требований к клону не предъявлялось, то я решил заложить в него всего две команды – включить кондиционер и выключить его. В жаркое лето этого вполне было достаточно.

Итак, мне удалось получить следующие осциллограммы команд пульта. Поскольку пакеты получились «длинные», то для наглядности привожу лишь их фрагменты:

Необходимо было учесть тот факт, что пульт излучает данные команды в инверсной форме, поскольку в отсутствии ИК-сигнала ИК-приемник выдает лог. «1», а при появлении лог. «0». Кроме того для того, что бы ИК-сигнал (по активному фронту) стал излучаться его необходимо промодулировать на частоте порядка 10 – 16 кГц.

Это можно описать следующей схемой:

Таким образом имея осциллограмму команд со всеми временными характеристиками, учитывая то, что команды должны быть инвертированы и их верхний фронт должен быть промодулирован несущей частотой, я решил собрать устройство:

В основу я заложил пик-контроллер младшего семейства Microchip – PIC12F629. Он вполне мог справиться с поставленной задачей при пониженном напряжении в 3 В .

В процессе анализа пакетов и привязки к ним «0» и «1» битов по их длине, я получил следующие двоичные коды команд:

«Включить» «Выключить»
00010001 00000001
01000100 01000100
10000000 10000000
01001000 01110000
11011100 00000000
11100000 00010000
00000000 00000000
00000000 00000000
00110000 00110000

Байты следовали друг за другом без интервалов (начиная со старшего разряда), предварялись стартовым кодом – 9 mS высокий фронт-  4,5 mS низкий фронт.

Первой подавалась команда «Включить» затем следовала пауза в 1 S и далее команда «Выключить».

Для простоты реализации устройства я использовал всего одну кнопку – включение питания. Если кондиционер был выключен, первая команда включала его. Если он был включен, первая команда игнорировалась , а следующая выключала его.

Программа для устройства написана без использования прерываний. Обработка байтов команд происходит путем последовательного считывания битов и по результатам вызова подпрограмм соответствующих временных интервалов.

В качестве корпуса для устройства я использовал китайский пульт . Немного доработав его – вырезал в корпусе отверстие для возможности извлечения контроллера :

Изменил схему монтажа, подогнав его под пик:

В сборке он выглядел так:

Программа в MPLAB и саундтреки команд, записанных в звуковом редакторе:

Список радиоэлементов

Скачать список элементов (PDF)

Прикрепленные файлы:

  • roison.asm (5 Кб)
  • Roison.rar (13 Кб)

Источник: http://cxem.gq/ik/2-24.php

Alex_EXE

В микроконтроллерах есть полезная вещь – таймер. Таймер можно использовать как счётчик или с его помощью формировать импульсы заданной длины (ШИМ). С использованием таймера можно, например, построить часы или генератор.

В микроконтроллера 16 семейства есть 3 таймера: TRM0, TRM1 и TRM2. Каждый из них больше подходит для определённого типа работы. Рассмотрим эти таймеры подробнее:

TRM0

  • 8-битный таймер (считает от 0 до 255)
  • тактируется от системной частоты или от внешнего источника
  • считает по переднему или заднему фронту сигнала
  • 8-битный предделитель
  • прерывание генерируется при переполнении (при переходе от 255 к 0)
  • таймер работает постоянно

Этот таймер можно использовать для генерации импульсов заданной длины или для подсчёта входящих импульсов.

Управление таймером осуществляется регистром OPTION_REG (OPTION в программе).

TRM1

  • 16-битный таймер (0..65535)
  • может тактироваться как от внешнего источника сигналов, так и от
  • дополнительного часового кварца
  • максимально предделитель — 1:8
  • таймер считает только передние фронты сигнала
  • таймер может использоваться модулем CCP
  • таймер можно отключать

Применения аналогичные TMR0.

Управление таймером осуществляется регистром T1CON.

TRM2

  • 8-битный таймер
  • тактируется только от системной частоты
  • предделитель 1:1 , 1:4 , 1:16
  • таймер можно отключать

Этот таймер имеет другой принцип работы. Таймер считает импульсы от нуля до заданного PR2. После совпадения TRM2 и PR2 сигнал поступает на 4-битный постделитель и генерируется прерывание. Такая система позволяет генерировать частоты с минимальным шагом. Таймер может посылать сигналы на CCP в качестве базы тайминга ШИМа.

Управление таймером осуществляется регистром T2CON.

Управлением прерываниями осуществляется из регистра INTCON.

Пример

Перейдём к коду прошивки. В примере задействованы два счётчика TRM0 для счётчика входных импульсов и TRM1 для мигания 2-мя светодиодами.

Включим таймеры TRM0 для счётчика и TRM1 для мигания 2-мя светодиодами.

INTCON=0b11100000; // Настройка прерываний OPTION=0b00101000; // Настройка TMR0 T1CON =0b00110001; // Настройка TMR1 TMR1IE=1;

В основном коде программы только вывод значения счётчика на дисплей.

void main() { low_init(); // инициализация МК InitLCD(); // инициализация дисплея TMR0=0; // обнуляем таймер TMR0 LED=0; // обнуляем переменную отвечающею за светодиоды while(1==1) { IntToLCD(0,0,TMR0); // вывести на дисплей содержимое таймера delay(1000); // задержка } }

Основное же действие разворачивается в обработчике прерываний.

void interrupt isr(void) { if(T0IF) // при переполнение TMR0 { T0IF=0; // сбрасываем флаг о его переполнение } if(TMR1IF) // при переполнение TMR1 { LED++; // управление светодиодами if(LED>3) { LED=0; } PORTA=LED; TMR1IF=0; // сбрасываем флаг } }

В обработчике первого таймера TRM0: при его переполнение нечего полезного не происходит, только сбрасывается флаг переполнения. При переполнение второго таймера TRM1: светодиоды зажигаются по-новому (на них выводиться двоичный счётчик), и сбрасывается флаг переполнения второго таймера.

Ниже приведены фотография и видео работы таймеров из примера.

Работа таймеров

Скачать исходник и проект для proteus

Alex_EXE | 19.04.2011 | Микроконтроллеры |

Источник: https://alex-exe.ru/radio/microcontrollers/timer-pic/

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}