Читаем Изучаем Arduino: инструменты и методы технического волшебства полностью

кнопке конденсатор, а последовательно подсоединим резистор (рис. 12.3). Когда кнопка не нажата, конденсатор заряжается через резисторы R1 и R2. При нажатии на кнопку конденсатор начинает разряжаться и через некоторое время на выходе напряжение упадет до нуля. Если есть дребезг, сигнал "подпрыгивает" вверх и вниз в течение нескольких миллисекунд, но конденсатор подзаряжается через резистор и на выходе поддерживается высокий уровень напряжения. Благодаря этому уровень сигнала меняется с высокого на низкий только один раз в течение интервала времени, определяемого значениями резистора и конденсатора.

Рис. 12.2. Дребезг при нажатии обычной кнопки

Рис. 12.3. Схема устранения дребезга с помощью RC-цепочки

- 259 -

Резистор R2, включенный последовательно с кнопкой, уменьшает ток заряда и разряда конденсатора. Слишком большой ток может повредить кнопку. Добавление резистора 100 Ом увеличивает время разряда и обеспечивает безопасность компонентов. Но в результате спад импульса приобретает вид, изображенный на рис. 12.4.

Погашение дребезга с помощью RC-контура

Рис. 12.4. Сигнал на выходе RC-цепочки, устраняющей дребезг

Благодаря RC-цепочке дребезг исчез, но перепад напряжения на выводе Arduino приобрел экспоненциальную форму. При опросе контакта прерывание происходит при переходе от низкого уровня к высокому и от высокого к низкому с определеой скоростью. Из-за сглаживания, вызванного конденсатором, момент прерывания определяется неточно. Крутизну спада сигнала можно увеличить с помощью триггера Шмитта. Интегральные схемы с триггером Шмитта обеспечивают резкий перепад сигнала на выходе, при превышении входным сигналом определенного порога. Выходной сигнал с триггера Шмитта можно непосредственно подавать на контакт Arduino. В этой главе мы используем инвертирующий триггер Шмитта на микросхеме 74НС14. В корпусе этой микросхемы находятся шесть отдельных инвертирующих триггеров Шмитта, в наших примерах понадобится только один.

Цоколевка микросхемы приведена на рис. 12.5.

Подсоединим выход RC-цепочки к входу триггера Шмитта, а сигнал с его выхода подадим на контакт платы Arduino (рис.-12.6).

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

- 260 -

Рис. 12.5. Цоколевка микросхемы 74НС14

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

12.3.2. Монтаж схемы

Мы разобрались, как работает аппаратное подавление дребезга для кнопки. Для экспериментов возьмем RGB-светодиод и одну кнопку. Соедините элементы согласно схеме, изображенной на рис. 12.8.

- 261 -

Погашение дребезга с помощью RC-контура и триггера Шмитта

Рис. 12.7. Сигнал на выходе схемы подавления дребезга с триггером Шмипа

Рис. 12.8. Схема устройства подавления дребезга

- 262 -

12.3.3. Программа обработки аппаратного прерывания

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

Есть много сценариев, в которых это необходимо, мы будем управлять яркостью светодиода, формируя ШИМ-сигнал с помощью функции analogWrite(). Устройство подает на один из трех выводов RGB-светодиода сигнал, варьирующий от 0 до 255 и обратно. Каждый раз при нажатии на кнопку меняется цвет свечения. Это невозможно сделать с помощью опроса состояния вывода в цикле, т. к. момент нажатия кнопки почти наверняка будет пропущен.

Сначала разберемся, что такое переменные volatile. Если переменная будет меняться при выполнении прерывания, ее следует объявить как volatile (нестабильная). Это необходимо для корректной обработки переменной компилятором. Пример объявления переменной как volatile:

volatile int selectedLED = 9;

Для вызова прерывания в Arduino предусмотрена функция attachInterrupt(), находящаяся в setup(). Параметры функции: идентификатор прерывания (или номер контакта для платы Due ), имя функции обработки прерывания и режим запуска прерывания (LOW, CHANGE, RISING или FALLING). В нашей программе объявлено прерывание о (вывод 2 на плате Uno), которое при срабатывании RISING (по фронту) запускает функцию swap()

attachInterrupt(0, swap, RISING);

Перейти на страницу:

Похожие книги

Самоучитель UML
Самоучитель UML

Самоучитель UMLПервое издание.В книге рассматриваются основы UML – унифицированного языка моделирования для описания, визуализации и документирования объектно-ориентированных систем и бизнес-процессов в ходе разработки программных приложений. Подробно описываются базовые понятия UML, необходимые для построения объектно-ориентированной модели системы с использованием графической нотации. Изложение сопровождается примерами разработки отдельных диаграмм, которые необходимы для представления информационной модели системы. Цель книги – помочь программистам освоить новую методологию разработки корпоративных программных приложений для последующего применения полученных знаний с использованием соответствующих CASE-инструментов.

Александр Васильевич Леоненков , Александр Леоненков

Зарубежная компьютерная, околокомпьютерная литература / Программирование / Прочая компьютерная литература / Книги по IT
Основы информатики: Учебник для вузов
Основы информатики: Учебник для вузов

Учебник состоит из двух разделов: теоретического и практического. В теоретической части учебника изложены основы современной информатики как комплексной научно-технической дисциплины, включающей изучение структуры и общих свойств информации и информационных процессов, общих принципов построения вычислительных устройств, рассмотрены вопросы организации и функционирования информационно-вычислительных сетей, компьютерной безопасности, представлены ключевые понятия алгоритмизации и программирования, баз данных и СУБД. Для контроля полученных теоретических знаний предлагаются вопросы для самопроверки и тесты. Практическая часть освещает алгоритмы основных действий при работе с текстовым процессором Microsoft Word, табличным редактором Microsoft Excel, программой для создания презентаций Microsoft Power Point, программами-архиваторами и антивирусными программами. В качестве закрепления пройденного практического курса в конце каждого раздела предлагается выполнить самостоятельную работу.

Вадим Васильевич Лысенко , Лариса Александровна Малинина , Максим Анатольевич Беляев

Зарубежная компьютерная, околокомпьютерная литература / Прочая компьютерная литература / Книги по IT
Внутреннее устройство Microsoft Windows (гл. 1-4)
Внутреннее устройство Microsoft Windows (гл. 1-4)

Книга посвящена внутреннему устройству и алгоритмам работы основных компонентов операционной системы Microsoft Windows — Windows Server 2003, Windows XP и Windows 2000 — и файловой системы NTFS. Детально рассмотрены системные механизмы: диспетчеризация ловушек и прерываний, DPC, APC, LPC, RPC, синхронизация, системные рабочие потоки, глобальные флаги и др. Также описываются все этапы загрузки операционной системы и завершения ее работы. B четвертом издании книги больше внимания уделяется глубокому анализу и устранению проблем, из-за которых происходит крах операционной системы или из-за которых ее не удается загрузить. Кроме того, рассматриваются детали реализации поддержки аппаратных платформ AMD x64 и Intel IA64. Книга состоит из 14 глав, словаря терминов и предметного указателя. Книга предназначена системным администраторам, разработчикам серьезных приложений и всем, кто хочет понять, как устроена операционная система Windows.Названия всех команд, диалоговых окон и других интерфейсных элементов операционной системы приведены как на английском языке, так и на русском.Версия Fb2 редакции — 1.5. Об ошибках просьба сообщать по адресу — general2008@ukr.net.

Дэвид Соломон , Марк Руссинович

Зарубежная компьютерная, околокомпьютерная литература / Прочая компьютерная литература / Книги по IT