Простейшая сигнализация на attiny13

Иммобилайзер на микроконтроллере ATtiny13

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

{ads2}Предлагаемое устройство работает независимо от других, установленных ранее, охранных систем, и является дополнением к ним, дублируя некоторые их функции. Отличительная особенность состоит в том, что владельцу автомобиля не понадобится носить дополнительных чипованных ключей или других внешних аксессуаров для активизации устройства, всё, что надо, хранится в голове.

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

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

Воздействие на скрытно установленный фото-сенсор надо осуществлять определённым “секретным” образом.

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

Даное устройство является одним из вариантов подобного моего устройства “иммобилайзер-секретка”,опубликованного два года назад и выложенного так же в открытый доступ в интернете на сайте “радиодед” ,там для активизации применялась либо педаль тормоза,либо скрытая кнопка.Здесь же я ушёл от внешних кнопок подключения и сократил колмчество проводов подключения к электросхеме автомобиля до 3-х.

В публикуемой версии иммобилайзера под кодовым названием «OPTIC» (т.е. оптический) вместо кнопки использована оптическая система – фотобарьер, принцип которой использует прерывание луча между светодиодом и фотоприёмником, что эквивалентно нажатию кнопки. Далее по тексту я иногда буду называть это действие – нажатием на кнопку.

Работа устройства

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

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

И никакого звучания зуммера и зажигания светодиода (HL1), не последует.

Если воздействие на кнопку окажется правильным, индикация оповестит о разрешении запуске двигателя – прозвучит сигнал двойной тональности, который отличается по звуку от начального сигнала, и загорится постоянно зелёный светодиод. Это означает, что блокировка двигателя отключена. После этого надо убрать палец из зоны фотобарьера, и можно запускать двигатель, как обычно.

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

{ads1}

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

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

Режим «VALET»

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

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

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

Отключить режим «VALET» можно точно так же, как и включить, то есть удержанием кнопки после сигнала 6-и пиликаний сигнала, дождавшись смены тональности звука, убрать палец и выключить зажигание.

Режимы работы

У иммобилайзера имеется два режима работы.

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

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

2 – режим VALET. В этом режиме устройство заблокировано, и можно пользоваться автомобилем, как обычно, не демонтируя блок, он не мешает процессу запуска двигателя.

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

Описание схемы

Иммобилайзер подключается 3-мя проводами (или 4-мя, если задействован выход Х2 для коммутации нагрузки, которая подключится после неудачной попытки запуска).

Х1: на этот вывод подаётся напряжение питания +12 вольт с замка зажигания, как показано на схеме замка (выше).

Х4: этот вывод подключается к «массе», т.е. общему минусовому проводу бортовой сети автомобиля.

Для управления внешними устройствами у иммобилайзера имеется два выхода Х3 и X2.

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

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

В цепь этого реле мы врезаем схему нашего устройства, предварительно разрезав штатный провод его питания со стороны минуса (общего провода).

Выход Х2 активизируется только после отключения нагрузки Т1, т.е.

при неудачной попытке запуска двигателя, и только после этого на выходе X2 на 5 секунд появится “масса”.

На этот вывод можно подключить, например, дополнительную сирену, применяемую в автосигнализациях, один вывод которой следует подключить к +12 в, а второй к стоку транзистора Т2.

Конструкция и детали

В устройстве используется микроконтроллер семейства AVR типа ATtiny13. Для тактирования задействован внутренний RC-генератор 9,6 Мгц с делителем на 8, что в итоге дает 1,2 Мгц. Обеспечить этот режим можно при программировании чипа, посредством программатора, правильно выставив галочки против соответствующих фьюзов, как показано на рисунке слева.

Буззер – обычный электродинамический излучатель с сопротивлением обмотки от 50 Ом и выше.Резистор R5 подбирается из соображений оптимального тока светодиода для надёжного срабатывания фотодатчика,(чем больше расстояние между фотоприёмником и излучателем,тем больше может потребоваться ток излучателя.)

Транзистор Т1 можно применить отечественный, с допустимым током коллектора более 120 ма, например КТ603, или с похожими характеристиками, способный коммутировать штатное реле автомобиля.

{ads1}

Транзистор Т2 полевой, N-канальной структуры (.30v, 45A ), можно применить транзистор SSM60T03GH которые стоят на материнских платах .Назначение Т2 – обеспечить ещё один”сюрприз” угонщику,спустя время после неудачной попытки запуска двигателя.

Компоненты,как транзистор Т2 ,светодиоды HL1 , HL2 , резисторы R1,R2 можно исключить из схемы совсем,на работе устройства это никак не отразится , если не планируется применять коммутацию внешней нагрузки с выхода Х2 а так же не планируется оценивать режим работы устройства визуально по светодиодам,а воспринимать информацию о состоянии устройства только лишь на слух,по звуковым.сигналам зуммера,что обеспечит ещё большую скрытность устройства не привлекая внимания посторонних глаз.

В качестве датчика можно применить готовую открытую оптопару типа TCST1230 (Transmissive Optical Sensor with Phototransistor Output) или подобные. Но в этом случае прерывать луч можно будет только непрозрачным предметом шириной не более 2,5 мм, например, ключом от входной двери.

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

При желании в качестве датчика ( вместо оптического ) можно попробовать применить и иной сенсор, ёмкостный,который будет чувствовать прикосновение пальца через пластик на приборной панели в определённом месте ,иными словами ,прикоснувшись рукой к определённому месту приборной панели снаружи, схема будет активизироваться, для этого в добавление к схеме ,может быть применена микросхема AT42QT1011 (типовая схема подключения, рисунок слева) она может реагировать на прикосновение через стекло и пластик,или дерево толщиной 6-10 мм. но ,применив этот датчик ,потребуется небольшая доработка для данного устройства.(если возникнет интерес к такому варианту,можно обсудить так же на форуме)

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

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

Автор отлаживал устройство на макетной плате (см. фото справа) где к штырькам разъёмов платы подключались различные варианты сенсоров ,описанные выше,.а к выходам Х2,Х3 различные типы нагрузок,схема реально работала точно так же,как и виртуальная модель в программе симуляторе ,Proteus.

Внимание!

Данное устройство не проходило длительного тестирования на автомобиле, а лишь было опробовано в лабораторных условиях (для реального тестирования на момнет разработки не нашлось энтузиастов-испытателей).

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

Устанавливать этот модуль в автомобиль и опробовать его работу вы можете только на свой страх и риск.

Для проведения испытаний на реальном автомобиле, чтобы застраховаться от непредвиденных последствий, можно изготовить разъём с 4-мя штырьками, к которому припаять провода, идущие от электросхемы автомобиля, как показано на схеме подключения иммобилайзера, и тогда иммобилайзер можно будет подключать на время эксперимента, а для возврата схемы в прежнее исходное положение втыкать вместо него заглушку, на которой должна стоять перемычка между выводами Х3 и Х4.

Обсуждение работы данного устройства можно продолжить на форуме – см. ссылку ниже.

Все права на данное устройство принадлежат автору.

В прикреплённом архиве находится прошивка МК, схема, иллюстрации и описание, виртуальная модель устройства в программе Proteus, и вариант печатной платы.

Владимир Науменко,
Калининград.

Вложения:ФайлОписаниеРазмер файла:
Иммобилайзер Архив с материалами к проекту 214 Кб

Источник: https://simple-devices.ru/prj/9/163

下载视频,免费观看

17:44

[MiHK]【突發】挑戰極限動作受傷

Источник: https://cnvid.net/video/%D0%BF%D1%80%D0%BE%D1%81%D1%82%D0%B5%D0%B9%D1%88%D0%B0%D1%8F-%D1%81%D0%B8%D0%B3%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-%D0%BD%D0%B0-attiny13-xnrOLga5p8o.html

attiny13 / Поиск по тегам / Сообщество EasyElectronics.ru

Статью писал пол года назад на GeekTimes, может даже кто-то из сообщества ее читал. Переношу сюда для поддержания ресурса, плюс ко всему, возможно кому-нибудь из сообщества пригодиться концепция девайса. Как ни странно, на разработку этого устройства меня толкнули лень и дискомфорт.

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

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

Начал прокручивать в голове различные решения на подобии измерителя поля на полевом транзисторе и антенне, ИК приемо-передатчиками в воротный проем и в итоге тернистый путь привел меня к широко известному PIR-датчику HC-SR50.

Читать дальше

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

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

Особенно это касается расчета и конструкции трансформатора.

Читать дальше

AVR attiny13 довольно популярный микроконтроллер (далее МК) и довольно дешевый (20 рублей на ebay). Но есть у него небольшой недостаток: 6 пинов I/O. А на деле вообще 5 (если не шаманить с reset). Если надо большое кол-во пинов на вывод чем может позволить микроконтроллер, то с легкостью используется микросхема регистра сдвига 74HC595, которая потребует 3-х пинов. Потратив 3 пина, можно получить 8*N пинов для вывода(где N — кол-во микросхем 74HC595). Если со статическим выводом всё ясно, то что делать с ШИМ (PWM)?

Читать дальше

Знает ли кто-нибудь, чем, отличаются ATTiny2313 от ATTiny2313A и ATTiny13 от ATTiny13A? А то цена привлекательная, но непонятно чем отличаются характеристики.

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

Все любят гипножабу тиньки! Я часто играюсь с Тини2313 или 13, так-что решение прицепить их к пинборде вполне очевидно. Тем более, что я посеял программатор Громова и вынужден пользоваться дудкой (AVRDUDE). После скрещивания ужа с ежом получился шилд:

Читать дальше

Не очень уверен в какой блог публиковать, но вроде про питание тут больше, чем про AVR 🙂
Есть у меня замечательная подруга — любительница велосипеда. В прошлом году она купила для своего двухколёсного транспорта фару. Вот такую (фото с tripemma.

info):Фонарь изумительный, оснащённый мощным светодиодом с рефлектором, драйвером для диода и встроенным аккумулятором 4.8V/780mAh. Так как фонарь был приобретён ближе к концу велосезона, хозяйка не успела ещё посадить “батарейку”, как пришло время зимней парковки. Соответственно, поскольку аккумулятор не сел, то и заряжать его не пришлось.

Как следствие, зарядное устройство было среди зимы ненароком выброшено, по причине “Интересно, а это от чего? Не помню… Ааа, нафиг его!” 🙂 Зима прошла, снова стало тепло и сухо, снова велосипед стал основным транспортом, снова понадобился фонарь. И, конечно, аккумулятор сел, хоть и не сразу.

Эта история и привела к разработке следующего девайса, который может быть с небольшими изменениями использован для зарядки любых Mi-MH и Ni-Cd аккумуляторов.

Читать дальше

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

Читать дальше

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

А, как на зло, у нас электричество выключается не реже раза в неделю — иногда на 10 минут, чаще на 2-3 часа, а бывает, что и целый день (я не говорю уже о новогодней аварии — света не было больше недели). И это в 20 километрах от Москвы.

Бесперебойник поддерживает нормальную работу системы только в течение 40 минут, а дальше холод и тоска. Чтобы нормально жить приходится запускать бензогенератор. Но это когда я на даче. А если на работе? Или в Москве… Чтобы быть в курсе протекающих процессов установил я Мастер-Китовскую сигнализацию ВМ8039.

Чтобы если что случится, слала мне на мобильный телефон SMSки. В первую очередь подключил датчик наличия сетевого напряжения (на герконовом реле — есть сеть — контакты замкнуты, нет сети — разомкнуты).

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

Поставить еще один – некошерно, тем более, что потребление 50 ма при напряжении 12 вольт, и только при передаче SMSки повышается до 500 ма. Поэтому решил я питать сигнализацию от аккумулятора ЕР-7,2-12, что на 12 вольт, 7 ампер-часов. А для его подзарядки собрал схему управления, которая и превратила его в ИСТОЧНИК БЕСПЕРЕБОЙНОГО ПИТАНИЯ.

Читать дальше

Источник: http://we.easyelectronics.ru/tag/attiny13/

Умная поливалка цветка на микроконтроллере Attiny13A

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

Я постарался сделать все просто и детально объяснить каждый этап. Надеюсь, это будет полезно и увлекательно как для читателей, так и для тех, кто решит побаловать себя, и сделать что-то подобное.

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

Начнем с технического задания

  • Сделаем устройство, которое сможет поливать комнатные растения без участия человека в течении минимум 5 дней.
  • Устройство должно учитывать влажность грунта.
  • Стоимость устройства не должна превышать 1000р.

Подбор элементной базы

Выбор микроконтроллера был очевиден, у меня был Attiny13А, его и взял, у него 1Кб памяти под программу, ну да ладно, этого хватит. Достался мне он за 115 руб в розничном магазине радиоэлектроники.

Attiny13А даташит

Рисунок 1 (микроконтроллер Attiny13А) Микроконтроллер, содержит основную логику работы.

Для аналогового датчика:

Пауза между поливами 3 часа, если сигнал с датчика влажности снижается (до 2В или даже 1В), длительность перерыва уменьшается, минимальный перерыв — 1 час.

Цикл полива 6-12 секунд, первые 6 сек полив будет в любом случае, далее при превышении сигнала с датчика влажности 3В полив прекращается, либо длится 12 секунд, если влажность не достигнута.

При нажатии на кнопку (reset) происходит полив прямо сейчас.

Для датчика с компаратором (высокого сигнала при низкой влажности):

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

При нажатии на кнопку (reset) происходит полив прямо сейчас. ULN2003АРисунок 2 (микросхема ULN2003А) Сборка транзисторов Дарлингтона нужна для того, чтобы управлять реле и мигать светодиодом. На контроллере ток с ножек очень маленький, 20мА, может даже меньше, а реле нужно 100мА и защиту от индуктивной нагрузки диодом с этой схемкой делать ненужно, т.к.

внутри уже всё предусмотрено. Купил за 20 руб. Датчик влажности почвы (питание 5В, выход пороговый), 150рРисунок 3 (датчик влажности почвы с компаратором) Работает он так: подкручиваем резисор, настраеваем на нужную влажность. Если влажность выше порога, он выдает низкий уровень, если ниже, то высокий. Датчик влажности почвы (питание 5В, выход аналоговый), 230 руб.

Рисунок 3_1 (датчик влажности почвы аналоговый) А этот работает так: выдаёт аналоговый сигнал от маленького при низкой влажности, до большого при высокой (максимум 4,2В при питании 5В, потребление тока 35мА). Есть еще и такие, у которых реле от компаратора срабатывает.

Реле с управляющим напряжением 5В 200мВт, коммутируемый ток DC 5А 12В или больше, я использовал вот такое — TR99-5VDC-SB-CD. 90 руб.Рисунок 4 (реле TR99-5VDC-SB-CD) (DC-DC 6-36В/5В 2000мА и блок питания на 12В 5А) или батарейка от телефона 4.2В с постоянно включенной зарядкой.

Для питания использовал телефон Филипс х100, у которого разбился экран, для его зарядки подходит провод usb – miniusb. Это самый дорогой элемент, телефон стоил 1200р новый, но т.к. из него нужно только функция зарядки, то можно купить на рынке сильно б/у за 300 руб. Будет осторожны, контроллер и насос могут разрядить батарейку до 3В, телефон при 3.

2В и ниже будет думать, что батарейка мертва, и телефон перестанет её заряжать. Вместо телефона можно подключить контроллер зарядки, с ним разряд не страшен, он заряжает даже аккумулятор разряженный в 0. Стоит такая штука 59 руб на dx-е, ну и аккумулятор все равно понадобится.

Рисунок 5 (Зарядное устройство для литиевых аккумуляторных батареек 1A) Кнопка, при нажатии будет происходить экстренный полив.Рисунок 6 (кнопка) Диод для защиты от неправильного включения (необязательно).

Конденсаторы по вкусу (3300мкФ для работы от батарейки мобильника, чтобы при включении моторчика просадка его не перезагружала, 0,1-200 мкФ параллельно с каждым потребителем для гашения помех). Резисторы (10к для поддяжки к питанию Ресета, 0,2к-0,3к токоограничивабщий для светодиода).

Насос омывателя стекла для ВАЗ (самый дешёвый, вместе с трубочкой, палочка и хомутики для крепления трубочки, ёмкость для воды). Тут есть один важный момент, перед тем как бросать в воду, нужно все дырочки, через которые вода может добраться до мотрочика или контактов, замазать герметиком, оставив только те, через которые вода входит и выходит.

Можно и так бросить конечно, он даже будет работать, но дольше прослужит, если загерметизировать.Рисунок 7 (насос омывателя ВАЗ в желтом ведёрке с водой) Плата макетная, или с готовыми дорожками и дырочками под детальки. Если кто-нибудь нарисует плату, и приложит в комментариях, это будет здорово, я использовал макетку.Рисунок 8 (макетка) Для программирования контроллера понадобятся ПО: PonyProg2000, LPT программатор (или другой, какой есть), hex прошивка, которая прилагается. Если есть желание подкорректировать исходник и скомпилировать свой hex, то понадобится ещё компилятор, например CV AVR.

Порядок работ

Для начала нужно подготовить контроллер к программированию, для этого нужно вывести ножки для программирования на программатор, согласно даташиту контроллера и lpt программатора. Вот так:Рисунок 9 (контроллер ножки для программирования)Рисунок 9_1 (общий вид программатора)Рисунок 10 (lpt программатор)Программа для контроллера на С (вариант с аналоговым датчиком влажности 0-5В)#define F_CPU 1200000UL
#include #include #define PUMP PORTB.0 //Выход на насос
#define LED PORTB.1 //Выход на светодиод #define MIN_WORKSEC 6 //Минимальное время полива в секундах #define WORKSEC 12 //Максимальное время полива в секундах
#define DELAYSEC 10800 //Максимальное время Паузы между поливами в секундах #define ADC_VREF_TYPE 0x00 // Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
} // Declare your global variables here void main(void)
{
// Declare your local variables here
int i=0, led_delay=0; float humidity=0;
unsigned int flagreset=0;
if(MCUSR==0x02)
{ flagreset=1;
}
MCUSR = 0x00;
// Crystal Oscillator division factor: 8
#pragma optsize-
CLKPR=0x80;
CLKPR=0x03;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif // Input/Output Ports initialization
// Port B initialization
// Func5=In Func4=In Func3=In Func2=In Func1=Out Func0=Out // State5=T State4=T State3=T State2=T State1=0 State0=0 PORTB=0x00;
DDRB=0x03; // Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00; // External Interrupt(s) initialization
// INT0: Off
// Interrupt on any change on pins PCINT0-5: Off
GIMSK=0x00;
MCUCR=0x00; // Timer/Counter 0 Interrupt(s) initialization
TIMSK0=0x04; // Analog Comparator initialization
// Analog Comparator: Off
ACSR=0x80;
ADCSRB=0x00; // ADC initialization
// ADC Clock frequency: 75,000 kHz
// ADC Bandgap Voltage Reference: Off
// ADC Auto Trigger Source: Free Running
// Digital input buffers on ADC0: On, ADC1: On, ADC2: On, ADC3: On
DIDR0&=0x03;
DIDR0|=0x00;
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0xA1;
ADCSRB&=0xF8; // Global enable interrupts
#asm(“sei”) while (1) { PUMP=0; LED=1; delay_ms(5000); LED=0; if(flagreset == 1) { PUMP=1; for(i=0; iMIN_WORKSEC) { humidity = read_adc(2)/204; if(humidity>3) { PUMP=0; } } } PUMP=0; flagreset=0; } led_delay = (DELAYSEC – 60)/12; for(i=0; iled_delay) { LED=1; } else { LED=0; } if(humidity

Источник: https://habr.com/post/233769/

Ссылка на основную публикацию
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}