Джереми Блум - Изучаем Arduino - инструметы и методы технического волшебства

Здесь есть возможность читать онлайн «Джереми Блум - Изучаем Arduino - инструметы и методы технического волшебства» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Санкт-Петербург, Год выпуска: 2015, ISBN: 2015, Издательство: БХВ-Петербург, Жанр: Прочая околокомпьтерная литература, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Изучаем Arduino: инструметы и методы технического волшебства: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Изучаем Arduino: инструметы и методы технического волшебства»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

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

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

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Изучаем Arduino: инструметы и методы технического волшебства», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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

Рис 26 Эффект дребезга кнопок Кнопка была физически нажата в течение 25 мс - фото 19

Рис. 2.6. Эффект дребезга кнопок

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

1. Сохраняем предыдущее и текущее состояния кнопки (при инициализации LOW).

2. Считываем текущее состояние кнопки.

3. Если текущее состояние кнопки отличается от предыдущего, ждем 5 мс, потому что кнопка, возможно, изменит свое состояние.

4. Подождав 5 мс, считываем состояние кнопки и делаем его текущим состоянием кнопки.

5. Если предыдущее состояние кнопки было LOW, а текущее - HIGH, переключаем состояние светодиода.

- 56 -

6. Устанавливаем предыдущее состояние кнопки в качестве текущего.

7. Возвращаемся к шагу 2.

Данный алгоритм - прекрасный пример для изучения функций. Функция - это оператор, который может принимать входные аргументы, выполнять фрагмент кода с их использованием и, возможно, возвращать результат. Не зная этого, вы уже встречали функции в программах. Например, digitalWrite() - это функция, которая принимает в качестве аргументов номер контакта и значение ( HIGH или LOW), и устанавливает это значение на контакте. Чтобы упростить программу, можно определить свои собственные функции для инкапсуляции действий, которые придется повторять неоднократно.

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

Листинг 2.5. Подавление дребезга кнопки — debounce.ino

const int LED=9; // Контакт 9 для подключения светодиода

const int BUTTON=2; // Контакт 2 для подключения кнопки

boolean lastButton = LOW;// Переменная для сохранения предыдущего

// состояния кнопки

boolean currentButton = LOW;// Переменная для сохранения текущего

// состояния кнопки

boolean ledOn = false;// Текущее состояние светодиода

//(включен/выключен)

void setup()

{

pinMode (LED, OUTPUT);// Сконфигурировать контакт светодиода как выход

pinMode (BUTTON, INPUT);//Сконфигурировать контакт кнопки как вход

}

/*

* Функция сглаживания дребезга

* принимает в качестве аргумента предыдущее состояние кнопки

* и выдает фактическое.

*/

boolean debounce(boolean last)

{

boolean current = digitalRead(BUTTON);// Считать состояние кнопки

if (last != current)// Если изменилось...

{

delay(5);// Ждем 5 мс

current = digitalRead(BUTTON);// Считываем состояние кнопки

return current;// Возвращаем состояние кнопки

}

}

- 57 -

void loop()

{

currentButton = debounce(lastButton);

if (lastButton == LOW && currentButton == HIGH) // Если нажатие

{

ledOn = !ledOn;// Инвертировать значение состояния светодиода

}

lastButton = currentButton;

digitalWrite(LED, ledOn);// Изменить статус состояния светодиода

}

Теперь рассмотрим текст листинга 2.5 подробнее. Сначала заданы номера контактов для подключения кнопки и светодиода. Затем объявлены три глобальные логические переменные, которые будут изменяться в программе (значение глобальной переменной можно менять в любой части программы). Каждой из трех переменных присвоены начальные значения (LOW, LOW и false). Далее в программе значения этих переменных могут изменяться с помощью оператора присваивания =.

Рассмотрим функцию подавления дребезга кнопки boolean debounce(). Эта функция принимает логическую переменную (имеющую только два состояния: true/false, HIGH/LOW, вкл./выкл., 1/0) предыдущего состояния кнопки и возвращает текущее значение состояния кнопки. Внутри функции текущее состояние кнопки сравнивается с предыдущим с помощью оператора != (не равно). Если состояния отличаются, то кнопка, возможно, нажата. Затем ожидаем 5 мс (этого достаточно, чтобы состояние кнопки стабилизировалось после дребезга), прежде чем проверить состояние кнопки снова. Затем вновь проверяем состояние кнопки. Как вы помните, функции могут возвращать результат. Данная функция возвращает текущее значение булевой локальной переменной, которая объявлена и используется только в функции debounce(). Когда функция debounce() вызывается из основного цикла, возвращенное значение записывается в глобальную переменную currentButton, которая была определена в начале программы.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Изучаем Arduino: инструметы и методы технического волшебства»

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


Отзывы о книге «Изучаем Arduino: инструметы и методы технического волшебства»

Обсуждение, отзывы о книге «Изучаем Arduino: инструметы и методы технического волшебства» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x