Здесь выполняются операторы если условие ложно — КиберПедия 

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

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

Здесь выполняются операторы если условие ложно

2017-12-21 174
Здесь выполняются операторы если условие ложно 0.00 из 5.00 0 оценок
Заказать работу

}

Вроде все понятно. В строке 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, либо в режиме ШИМ. Нам потребуется обычный режим, поэтому ничего менять здесь не надо.


Поделиться с друзьями:

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

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



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.011 с.