Монк - Программируем Arduino. Профессиональная работа со скетчами.

Тут можно читать онлайн Монк - Программируем Arduino. Профессиональная работа со скетчами. - бесплатно полную версию книги (целиком). Жанр: comp-programming, издательство Издательский дом Питер, год 2017. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте LibKing.Ru (ЛибКинг) или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Монк - Программируем Arduino. Профессиональная работа со скетчами.
  • Название:
    Программируем Arduino. Профессиональная работа со скетчами.
  • Автор:
  • Жанр:
  • Издательство:
    Издательский дом Питер
  • Год:
    2017
  • Город:
    СПб.
  • ISBN:
    978-5-496-02385-6
  • Рейтинг:
    5/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

Монк - Программируем Arduino. Профессиональная работа со скетчами. краткое содержание

Программируем Arduino. Профессиональная работа со скетчами. - описание и краткое содержание, автор Монк, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
Arduino — стандартный микроконтроллер, получивший широкое признание у инженеров, мастеров и преподавателей благодаря своей простоте, невысокой стоимости и большому разнообразию плат расширения. Платы расширения, подключаемые к основной плате Arduino, позволяют выходить в Интернет, управлять роботами и домашней автоматикой.
Простые проекты на основе Arduino не вызывают сложностей в реализации. Но, вступив на территорию, не охваченную вводными руководствами, и увеличивая сложность проектов, вы быстро столкнетесь с проблемой нехватки знаний — врагом всех программистов.
Эта книга задумана как продолжение бестселлера «Programming Arduino: Getting Started with Sketches». Несмотря на то что эта книга включает краткое повторение основ из книги «Programming Arduino», она познакомит читателя с более продвинутыми аспектами программирования плат Arduino.

Программируем Arduino. Профессиональная работа со скетчами. - читать онлайн бесплатно полную версию (весь текст целиком)

Программируем Arduino. Профессиональная работа со скетчами. - читать книгу онлайн бесплатно, автор Монк
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

If

Обычно строки программы выполняются по порядку, одна за другой, без исключений. Но как быть, если потребуется изменить порядок выполнения? Что если какая-то часть скетча должна выполняться только при определенном условии?

Хорошим примером может служить выполнение фрагмента, только когда нажата кнопка, подключенная к плате Arduino. Такой код мог бы выглядеть примерно так:

void setup()

{

pinMode(5, INPUT_PULLUP);

pinMode(9, OUTPUT);

}

void loop()

{

if (digitalRead(5) == LOW)

{

digitalWrite(9, HIGH);

}

}

В этом случае условие (после оператора if) выполняется, если с контакта 5 прочитано значение LOW. Два знака «равно» == обозначают операцию определения равенства двух значений. Ее легко спутать с единственным знаком «равно», обозначающим операцию присваивания значения переменной. Оператор if говорит: если условие истинно (то есть выполняется), то должны быть выполнены команды в фигурных скобках. В данном случае команда, устанавливающая уровень напряжения HIGH на цифровом выходе 9.

Если условие ложно (не выполняется), то Arduino просто перешагнет через фигурные скобки и продолжит выполнение программы. В данном случае будет достигнут конец функции loop, и она запустится снова.

Циклы

По аналогии с выполнением некоторых операций по условию иногда в скетчах возникает необходимость повторять операции снова и снова. Конечно, вы и так получаете это поведение, помещая команды в функцию loop. То есть именно так действует Blink.

Но иногда требуется выполнить команды определенное число раз. Добиться этого можно с помощью команды for, позволяющей использовать переменную-счетчик. Например, напишем скетч, который мигает светодиодом 10 раз. Далее вы узнаете, почему это решение нельзя признать идеальным при определенных обстоятельствах, но сейчас оно вполне отвечает нашим потребностям.

// sketch 01_01_blink_10

int ledPin = 13;

int delayPeriod = 200;

void setup()

{

pinMode(ledPin, OUTPUT);

}

void loop()

{

for (int i = 0; i < 10; i++)

{

digitalWrite(ledPin, HIGH);

delay(delayPeriod);

digitalWrite(ledPin, LOW);

delay(delayPeriod);

}

}

ПРИМЕЧАНИЕ

Это наш первый законченный скетч, поэтому его имя указано в строке комментария в начале файла. Все скетчи с подобными именами можно загрузить на веб-сайте автора www.simonmonk.org. Чтобы установить все скетчи в окружение Arduino, распакуйте файл со скетчами в каталог Arduino, который находится в папке Documents (Документы). Среда разработки Arduino IDE автоматически создает эту папку при первом запуске.

Команда for определяет переменную с именем i и присваивает ей начальное значение 0. За точкой с запятой (;) следует текст i<10. Это условие продолжения цикла. Иными словами, пока значение i остается меньше 10, продолжают выполняться команды, заключенные в фигурные скобки.

Последний элемент в команде for — i++. Это сокращенная форма записи выражения i = i + 1, которое прибавляет 1 к значению i. Увеличение значения i на единицу происходит в конце каждого цикла. Это выражение гарантирует прекращение цикла, потому что, увеличивая i на 1, вы в конечном счете получите значение больше 10.

Функции

Функции — это способ группировки программных команд в удобный для использования блок. Функции помогают поделить скетч на управляемые и простые в использовании фрагменты.

Например, напишем скетч, который сначала быстро мигает светодиодом 10 раз, а затем начинает мигать с частотой один раз в секунду.

Прочитайте следующий листинг, а потом я объясню, как он работает.

// sketch 01_02_blink_fast_slow

int ledPin = 13;

void setup()

{

pinMode(ledPin, OUTPUT);

flash(10, 100);

}

void loop()

{

flash(1, 500);

}

void flash(int n, int delayPeriod)

{

for (int i = 0; i < n; i++)

{

digitalWrite(ledPin, HIGH);

delay(delayPeriod);

digitalWrite(ledPin, LOW);

delay(delayPeriod);

}

}

Функция setup теперь включает строку flash(10, 100);. Она означает: «мигнуть 10 раз с периодом задержки delayPeriod 100 мс». Команда flash не является встроенной командой Arduino — вы создадите эту очень полезную функцию сами.

Определение функции находится в конце скетча. Первая строка в определении функции

void flash(int n, int delayPeriod)

сообщает Arduino, что определяется новая функция с именем flash, которая принимает два параметра, оба типа int. Первый параметр, с именем n, определяет, сколько раз светодиод должен мигнуть, а второй, с именем delayPeriod, определяет величину паузы после включения или выключения светодиода.

Эти два параметра можно использовать только внутри функции. Так, n используется в команде for, где определяет количество повторений цикла, а delayPeriod — внутри команд delay.

Функция loop скетча также использует функцию flash, но с более длинным периодом задержки delayPeriod и количеством повторений, равным 1. Так как эта команда находится внутри функции loop, она будет выполняться снова и снова, заставляя светодиод мигать непрерывно.

Цифровые входы

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

Загрузите следующий скетч и запустите его:

// sketch 01_03_paperclip

int ledPin = 13;

int switchPin = 7;

void setup()

{

pinMode(ledPin, OUTPUT);

pinMode(switchPin, INPUT_PULLUP);

}

void loop()

{

if (digitalRead(switchPin) == LOW)

{

flash(100);

}

else

{

flash(500);

}

}

void flash(int delayPeriod)

{

digitalWrite(ledPin, HIGH);

delay(delayPeriod);

digitalWrite(ledPin, LOW);

delay(delayPeriod);

}

Используя кусок провода или выпрямленную скрепку, замкните контакты GND и 7, как показано на рис. 1.13. Это можно делать на включенной плате Arduino, но только после выгрузки в нее скетча. Это связано с тем, что некий предыдущий скетч мог настроить контакт 7 на работу в режиме выхода — в этом случае замыкание на GND может повредить контакт. Так как скетч настраивает контакт 7 на работу в режиме входа, его безопасно соединять с контактом GND.

Вот что происходит в результате: когда контакты замкнуты, светодиод мигает чаще, а когда не замкнуты — реже.

Давайте исследуем скетч и посмотрим, как он работает.

Рис 113Опыт с цифровым входом Вопервых в скетче появилась новая переменная - фото 12

Рис. 1.13.Опыт с цифровым входом

Во-первых, в скетче появилась новая переменная с именем switchPin. Этой переменной присвоен номер контакта 7. Скрепка в данном эксперименте играет роль выключателя. В функции setup контакт 7 настраивается на работу в режиме входа командой pinMode. Во втором аргументе команде pinMode передается не просто значение INPUT, а INPUT_PULLUP. Оно сообщает плате Arduino, что по умолчанию вход должен иметь уровень напряжения HIGH, если на него не подан уровень LOW соединением этого контакта с контактом GND (скрепкой).

В функции loop мы используем команду digitalRead для проверки уровня напряжения на входном контакте. Если он равен LOW (скрепка замыкает контакты), вызывается функция с именем flash и значением 100 (в параметре delayPeriod). Это заставляет светодиод мигать чаще.

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

Интервал:

Закладка:

Сделать


Монк читать все книги автора по порядку

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




Программируем Arduino. Профессиональная работа со скетчами. отзывы


Отзывы читателей о книге Программируем Arduino. Профессиональная работа со скетчами., автор: Монк. Читайте комментарии и мнения людей о произведении.


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

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