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

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

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

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

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

Изучаем Arduino: инструметы и методы технического волшебства - читать книгу онлайн бесплатно, автор Джереми Блум
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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, которая была определена в начале программы.

После вызова функции debounce() и установки значения переменной currentButton происходит сравнение текущего и предыдущего значений состояния кнопки с помощью оператора && (логический оператор "И", означающий, что выражение в скобках выполнится, только если истинно каждое из равенств, разделенных оператором &&).

Если ранее состояние кнопки было LOW, а теперь HIGH, значит, кнопка была нажата и нужно инвертировать значение переменной lecton. Это действие выполняет опера-

- 58 -

тор перед переменной lecton. Цикл закончен, обновляем предыдущую перемеую состояния кнопки и изменяем состояние светодиода.

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

2.9. Создание управляемого ночника на RGB-светодиоде

Вы уже знаете, как управлять цифровыми выходами, как создать противодребезговую защиту для кнопки, как менять яркость светодиода с помощью ШИМ-сигнала.

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

В устройстве используем RGB-светодиод с четырьмя выводами, один из которых является катодом, общим для всех трех диодов, а остальные - аноды для диодов каждого цвета. Подключите RGB-светодиод проводами к трем ШИМ-контактам платы Arduino через токоограничивающие резисторы, как показано на рис. 2. 7.

Вы можете настроить циклическое переключение цветов светодиода при каждом нажатии на кнопку. В данном случае удобно добавить функцию для установки цвета светодиода в следующее состояние. В программе, представленной в листинге 2.6, определено семь цветов и состояние, когда светодиод не горит. С помощью функции analogWrite() можно задать свои цветовые комбинации. Единственное отличие цикла loop() от предыдущего примера - увеличение числа состояний светодиода (по кругу от 0 до 7).

Загрузите программу в плату и поэкспериментируйте с разноцветным ночником.

Поменяйте цвет RGB-светодиода, изменив значения в функции analogWrite() на свои собственные.

Листинг 2.6. Управляемый ночник на светодиоде - rgb_nightlight.ino

const int BLED=9; // Контакт 9 для вывода BLUE RGB-светодиода

const int GLED=10; // Контакт 10 для вывода GREEN RGB-светодиода

const int RLED=11; // Контакт 11 для вывода RED RGB-светодиода

const int BUTTON=2; // Контакт 2 для входа кнопки

boolean lastButton = LOW; // Предыдущий статус кнопки

boolean currentButton = LOW; // Текущий статус кнопки

int ledMode = 0; // Значение статуса RGB-светодиода

void setup()

{

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

- 59 -

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

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

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

}

/*

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

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

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

*/

boolean debounce(boolean last)

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

Интервал:

Закладка:

Сделать


Джереми Блум читать все книги автора по порядку

Джереми Блум - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге Изучаем Arduino: инструметы и методы технического волшебства, автор: Джереми Блум. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x