Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
Топ:
Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие...
Генеалогическое древо Султанов Османской империи: Османские правители, вначале, будучи еще бейлербеями Анатолии, женились на дочерях византийских императоров...
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Интересное:
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
}
Вроде все понятно. В строке 2 мы смотрим чему равен наш флаг. Если он равен 0х00, то выполнятся операторы в первых фигурных скобках. Если любому отличному от 0х00 числу, а в нашем случае 0х01, то выполнятся операторы во вторых фигурных скобках. Оператор условия выполняется лишь раз в отличии от цикла. Теперь давайте рассмотрим что у нас в теле оператора условия. В строке под номером 4 мы присваиваем нулевому выходу порта В значение 1, то есть включаем лампу. В строке под номером 5 мы присваиваем флагу Lamp значение 0х01, тем самым говорим что лампа горит. В строках под номерами 9 и 10 мы выключаем лампу и сбрасываем флаг в 0х00. Теперь как только мы выйдем из первого цикла, то посмотрев условие, либо включим лампу если флаг 0х00(выключена), либо выключим если флаг 0х01(включена). Но вот проблема, если удерживать кнопку нажатой, то цикл будет всегда ложным и мы будем сразу же выброшены к оператору условия, а тот горда будет включать и выключать лампу. Нам этого не надо, ведь мы хотим включать и выключать лампу лишь при однократном нажатии на кнопку. Как быть? Да просто после условия поставить еще один бесконечный цикл. Строка под номером 12. Как видите там нет восклицательного знака. Да все потому что при нажатой кнопке в условии цикла будет единица, то есть для цикла это правда. Как только мы отпустим кнопку в условие цикла попадет ноль и мы выйдем из него. Так как вся эта программа написана в теле основного цикла, то после выхода из последнего цикла наша программа начнет выполнятся сначала. То есть буде ожидать очередного нажатие на кнопку.
Вот вроде и все. Теперь вы можете прикрутить это устройство к люстре и включать/выключать свет кнопкой без фиксации. Такие как раз применяют в "Умных домах". Чуть позже мы рассмотрим как МК соединить с ПК и тогда возможно при помощи мышки включать или выключать свет. Если возникнут вопросы пишите в комментариях или на почту.
Всем привет! В этой статье я продолжаю рассказывать о своем опыте при работе с AVR. Сегодня мы сделаем вполне интересное и даже действующее устройство, которое можно применить дома и показывать гостям. И так вперед.
Давайте вспомним, что мы сделали в прошлый раз. Мы написали простенькую программку, которая включала и выключала лампочку при нажатии на кнопку. Давайте улучшим наш девайс. Для этого нам понадобится добавить к МК еще одну как бы кнопку. Ну как бы потому что работать вход будет как кнопка, а по сути дела это будет контактом датчика движения. Сам алгоритм работы устройства прост. У нас будет та же кнопка включения и выключения лампы, Сама лампа. И еще датчик движения. Таки датчики продаются в любом строительном магазине в отделе электрика.

Они довольно дешевые поэтому их можно массово использовать также для систем умного дома. Давайте взглянем на схему.

На схеме также как и на предыдущей расположены кнопка и реле, управляемое транзистором в ключевом режиме, которое включает лампочку. Из нового, была добавлена кнопка под названием "Датчик". Эта кнопка имитирует работу контакта датчика. Когда датчик движения сработает, то контакты замкнутся. Ну вроде со схемой все понятно, давайте перейдем к нашей программе.
Задача:
1. При нажатии на кнопку включения/выключения лампы, соответственно должна включиться или выключиться лампа.
2. При включении лампы от кнопки должен начаться отсчет времени. (Например 30 минут)
3. При достижении назначенного времени выключить лампу.
4. При срабатывания датчика движения до достижения назначенного времени, сбросить таймер и начать отсчет с начала.
Вот вроде и все. Давайте рассмотрим саму программу. Запускаем программу CodeVisionAVR, открываем новый проект, выбираем чип ATmega8, кварц 4 МГц. Далее настраиваем порт В 0-й бит на выход с предустановленным нулем, 1-й и 2-й биты на вход. Ну вроде и все. Стоп!!! Нам же нужен таймер. Давайте немного отойдем от настройки проекта.
Если вспомнить одну из предыдущих статей то вы сразу предложите использовать библиотеку Delay.h для задания задержки любой длинны. И от части будете правы, но... Данная библиотека генерирует задержки методом сжирания рабочих тактов МК. Если проще говоря, то при генерации задержки МК тупо выполняет команду "ничего не делания" в период заданного времени. А нам-то надо в это время отслеживать датчик. Вдруг у нас в комнате люди. Ведь при срабатывания датчика движения именно это событие должно нам указывать на то что в комнате кто-то есть и нам не нужно гасить свет. Выключение света должно происходить в строго определенном состоянии, либо при нажатии кнопки выключения, либо при достижении заданного времени, что свидетельствует отсутствием людей в комнате. Зачем за зря жечь свет.
Вот мы и дошли до нашего таймера. Давайте откроем вкладку Timers и в ней первый таймер Timer1. Вот что мы увидим.

Расписываювсе подробно.
1. Clock Sourse здесь требуется выбрать из выпадающего списка источник тактовой частоты таймера. Есть три варианта: System Clock собственно частота кварца, T1 pin Falling Edge тактирование будет происходить от внешнего генератора присоединенного к входу Т1 и отсчет будет происходить по спадающему фронту, T1 Rising Edge тоже самое но только по нарастающему фронту. Мы будем тактовать от кварца, поэтому здесь ничего менять не надо.
Clock Value ну тут задается делитель тактовой частоты. Естественно данный пункт работает только с частотой кварца, а не с внешними генераторами. И что мы тут видим? Да собственно ничего, какие-то цифры и все. Так вот эти цифры и есть частоты деленные на коэффициент деления. Их всего 5. Первый равен единице, то есть деления нет. Вот мы и видим наши чистые 4 МГц. Второй равен 8. Разделим 4 МГц на восемь и получим 500 КГц. Третий равен 64. Разделим 4 МГЦ на 64 и получим 62,5 КГц. Четвертый 256. Разделим 4 МГЦ на 256 и получим 15,625 КГц. И последний равен 1024. Разделим 4 МГц на 1024 и получим 3906,25 Гц, а принимают как 3,906 КГц. Вот что означают эти непонятные цифры. При выборе других частот кварца, программа сама все разделит и цифры поменяются.
3. Mode здесь задается режим работы таймера. Либо обычный Normal top=FFFFh, либо в режиме ШИМ. Нам потребуется обычный режим, поэтому ничего менять здесь не надо.
|
|
|
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!