Pin-Up if и else в Arduino

Операторы if и else в Arduino используются для создания блоков условий в тексте программы. С их Pin-Up можно создавать интеллектуальные системы, которые самостоятельно принимают решение о том, что должна делать программа в зависимости от текущих условий. В этой статье мы рассмотрим синтаксис if в ардуино, а также примеры применения условий в разных ситуациях.

Pin-Up синтаксиса конструкций if и else

arduino if else

if - это оператор языка C++, который активно Pin-Up и в Arduino. Для обозначения условий в ардуино используется такая конструкция:

if (условие) { // В этом блоке список команд, выполняющихся, Pin-Up условие истино или имеет значение, отличное от 0 } else { // В этом блоке список команд, выполняющихся, если условие ложно или имеет значение, равное 0 }

Условие - это Pin-Up логическое выражение, возвращающееистину (TRUE)илиложь (FALSE). В одном условии можно использовать несколько выражений, объединяя их специальными логическими операторами. Мы подробно рассмотрим эти операторы Pin-Up позже. Примеры условий:

  • if(a) - Pin-Up истину, если значение переменной a не равно 0 или FALSE
  • if(a==5 && b>5) - вернет истину, если Pin-Up a равно 5, а b больше 5.
  • if(!a) - вернет истину, Pin-Up a сдержит 0 или FALSE.

Если последовательность команд состоит из одой команды, то символы { } можно не ставить (хотя Pin-Up рекомендуется ставить их всегда во избежание глупых ошибок):

if (условие)

// Команда

else

// Команда

Можно обойтись и без блокаelse, если вы хотите Pin-Up что-то только при выполнении условия и не будете ничего делать, если условие не выполнилось.

if(условие)

{

// Команды

}

В следующих разделах мы познакомимся с конкретными примерами и рассмотрим варианты синтаксиса. Но сперва давайте немного поговорим о том, что же такое условия и для чего они Pin-Up в Arduino. Если вы уже имели опыт написания программ, смело можете порпустить этот раздел.

Условия в тексте программы Arduino

Что такое условие

arduino if elseПредставьте себя на минуту вежливым роботом, который очень любит вкусные апельсины. К вам Pin-Up подходить разные люди и дарить совершенно разные сладости, но вы должны оставлять себе только круглые предметы оранжевого цвета. Какой алгоритм вы бы выбрали для своей программы?

Самый простой Pin-Up приходящий в голову, выглядит так:

  1. Получить предмет из рук человека.
  2. Определить цвет.
  3. Если цвет оранжевый, то взять.
  4. Иначе (если цвет не оранжевый), то не Pin-Up но сказать спасибо.

В этом тексте мы с вами использовали слово «если», входящее в русском языке в состав любого условия. Если идет дождь, надо взять зонт. Если у светофора горит красный, надо стоять и ждать. Если нажать на выключатель, станет светло. Мы пользуемся условиями постоянно, они помогают нам выработать какое-то правило поведения, когда есть несколько вариантов действий, а мы должны выбрать один из них. В нашем конкретном примере у нас два варианта действий после проверки условия. Первый вариант возникает Pin-Up условие выполнилось (цвет оранжевый) - мы запускаем последовательность действий по приемке предмета. Если условие не выполнилось (цвет любой, но не оранжевый), то запускаем процесс возврата и благодарности.

Как же теперь отразить эти условия в программе для ардуино?

Pin-Up и ветвление в тексте программы

Если представить алгоритм действий как последовательность команд, то в момент возникновения условия нам надо как-то разделить эту одну последовательность на две. Конечно, в момент выполнения команд контроллер всегда выполняет только одну цепочку команд. Но вот какой именно программный блок выбрать - он определяет сам, исходя из каких-то данных, полученных из окружения: сигналов датчиков, значений переменных и т.д. Каждый раз при запуске программы внешние сигналы будут разные, поэтом и выбираемая последовательность будет отличаться.

Вариантов условий и наших ответных действий может быть множество и все они должны быть в тексте нашей Pin-Up Мы должны придумать какой-то способ, чтобы пометить в этом тексте, какие команды в какой ситуации нужно выбрать.

Самым простым вариантом записи условий было бы использование графических Pin-Up На языке блок-схем мы бы просто провели линию для каждого из вариантов.

arduino if else

На одном листе можно нарисовать множество веток и Pin-Up логику принятия решения. Но когда мы пишем программу в Arduino IDE, графического способа у нас нет. Разбить текст на несколько колонок мы тоже не можем. Единственный остающийся вариант - как-то пометить те или иные последовательности команд с помощью специальных конструкций. Именно для этих целей и служат блоки if и else.

С помощью if и else мы «разделяем» список команд на те, которые будут выполняться при одних Pin-Up и те, которые будут выполнять при других. Мы разветвляем программу, именно поэтому блок условий часто называют реализацией ветвления.

Рассмотрим еще раз синтаксис и Pin-Up значение каждого оператора:

if(условие){

}else{

}

  • if (условие)- здесь мы формулируем условие, которое при запуске программы Pin-Up выполниться (тогда результат будет TRUE или любое число, не равное 0) или нет (тогда результат будет FALSE или 0).
  • В случае TRUE будут Pin-Up команды из первого блока в фигурных скобках.
  • Если условие вернет FALSE, то будет выполнен блок в фигурных скобках после словаelse.

Давайте же рассмотрим примеры использования if Pin-Up в реальном коде ардуино.

Примеры if и Pin-Up в ардуино

Простой пример блока условия

Самый простой пример использования условий:

if(1){ Serial.println("True"); }else{ Serial.println("False"); }

В мониторе порта у нас появится надпись “True”, потому что условие всегда выдаст 1 и всегда будет выполняться только первый блок. Написав if(0), мы заставим постоянно выполняться второй блок Pin-Up else.

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

Рассмотрим следующий пример, подставив вместо конкретной константы переменную. Ардуино определит значение переменой в блоке if и выберет первый или второй блок для продолжения работы.Бессмысленность та же, но уже используем Pin-Up значение которой можно легко менять.

boolean b = true; if(b){ Pin-Up }

Пример if с digitalRead

А вот теперь давайте рассмотрим первый осмысленный пример. Мы получим значение цифрового датчика и просигнализируем светодиодом, если Pin-Up вернет значение высокого уровня сигнала.

if(digitalRead(10)){ digitalWrite(13, HIGH); }else{ digitalWrite(13, Pin-Up }

Заметьте, мы не знаем в момент написания кода, какой вариант будет Pin-Up - ведь значение датчика (или уровень шума) на входе могут быть совершенно разными. В момент выполнения кода только сам контроллер решит, какие команды будут выполнены, исходя из тех значений, которые будут на входе в тот момент.

Пример if с роботом

Давайте попробуем реализовать пример с нашим любящим апельсины роботом в ардуино. Для упрощения задачи будем считать, что у нас есть функция isOrange(), возвращающая истину, если цвет оранжевый.

if (getOrange()) { Serial.println("Thank you! I like it!"); } else { Serial.println("Thank you! But I don’t Pin-Up it!"); }

Если функция isOrange() вернет true, то будет выполнен первый блок, иначе - второй. Pin-Up вывода на экран можно добавить другие команды, например, управления сервоприводами, контролирующими манипуляторы.

Пример if и сравнение диапазонов

Давайте рассмотрим пример if с функцией Pin-Up Мы получим значение с датчика и сравним его с некоторым пороговым значением.

if(analogRead(A0)>500){

Serial.println(“Ok!”);

}

Здесь ардуино в блокеifвызоветфункциюanalogRead, получит значение сигнала на пине A0 и выберет первый или второй вариант действий в зависимости от Pin-Up Для сравнения значения мы используем символ «>». Нам доступны и другие варианты:

  • «>» - вернет истину, если Pin-Up «больше».
  • «>-» - вернет истину, Pin-Up значение «больше или равно указанному».
  • «<» - вернет истину, если Pin-Up меньше
  • «<=» - вернет истину, если значение Pin-Up или равно
  • «!=» - вернет истину, если значение не равно указанном, т.е. больше или Pin-Up

Логические операторы в условиях

В блоке условий можно вставлять несколько логических выражений. Например, для того, чтобы потребовать не Pin-Up оранжевый, ноикруглый объект, мы должны объединить два условия с помощью оператора «&&» (нужно указать именно два символа). Использование этого оператора определяет жесткие условия, когда для выполнения логического выражения нам Pin-Up обязательно выполнить все внутренние выражения. Рассмотрим пример для нашего робота (считаем, что у нас есть функции isOrange() и isSphere()):

if(isOrange() && isSphere()){ Serial.println("Thank you! I Pin-Up it!"); }

Список операторов условий:

  • && - условие И
  • || - условие ИЛИ
  • ! - отрицание условия

Более подробно логические условия рассмотрены в Pin-Up про логические операторы

Несколько связанных условий

arduino if else

Завершим наш рассказ об if в ардуино описанием ситуации, когда мы по-разному должны реагировать не на два, а на большее количество Pin-Up условий. Например, для робота ардуино с датчиком расстояния нужно выполнить такие условия:

  • Расстояние робота до Pin-Up больше 2 метров - едем на максимальной скорости
  • Расстояние робота до препятствия Pin-Up 2 метров, но больше 1 метра - уменьшаем скорость
  • Расстояние робота до препятствий меньше1 метра - еще раз Pin-Up скорость.
  • Расстояние робота до препятствия меньше 20 см - Pin-Up и поворачиваем.

В Arduino такие множественные «подусловия» реализуются сочетанием оператора else и if. Давайте рассмотрим его на нашем примере. Пусть у нас определена функция getDistance(), возвращающая расстояние в сантиметрах. Тогда условие будет выглядеть Pin-Up

if (getDistance() > 200) { // Не сбавляем скорость, едем вперед } else if (getDistance() >= 100) { В принципе, 200 или 300 тоже больше 100, но первый блок выполнится первым, поэтому отработка при условии &amp;amp;gt;200 уже будет выполнена. Если бы значение было больше 200, то до нашего блока управление просто не дошло. Поэтому в этом блоке мы будем рассматривать ситуацию, когда значение меньше 200, но больше 100. Робот уменьшит скорость - он почувствует, что скоро препятствие. */ } else if Pin-Up >= 20) { Притормозим, готовясь к препятствию. */ } else { Расстояние меньше 20 (иначе все верхние блоки сработали бы). Поэтому смело считаем, что перед нами препятствие и поворачивае}

Таким образом, в одном блоке ветвлений мы отработали Pin-Up ситуации с роботом, заставив его действовать адаптивно, по обстоятельствам.

Заключение

Условия в любом языке программирования имеют крайне важное значение. Ни одна серьезная программа на ардуино не Pin-Up без условий if else. Именно в блоках условий проявляется интеллект робота, автоматического устройства и программиста, который его программирует. Именно в условиях отрабатываются все тонкости алгоритмов и именно там спрятаны боьшинство логических ошибок алгоритмов. Обязательно постарайтесь понять и отработать навыки работы с блоком if на реальных примерах. И обращайтесь к учебникам, если останутся какие-то неясности и непонимания.

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here