Взаимосвязь операторов if-else-if в Ардуино

Конструкция if-else-ifВ отличие от взаимодействия операторов if-else, рассмотренного в предыдущей статье, конструкция if-else-if позволяет вычислять дополнительные условные выражения.

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

Взаимосвязь или конструкция if-else-if показана ниже:

Как видно, конструкция if-else-if позволяет вычислить второе условное выражение после первого if.

Если первое условное выражение истинно, то код в теле оператора if будет запущен, а код в теле оператора else-if не будет запущен.

Только если первое условное выражение оценивается как ложное, будет вычислено второе условное выражение. Если значение второго условного выражения истинно, будет выполнен код в блоке под оператором else-if. Если второе условное выражение оценивается как ложное, выполнение программы продолжится после закрывающей фигурной скобки тела оператора else-if.

Пример скетча if-else-if

В приведенном ниже скетче показано использование конструкции if-else-if. Если из окна Монитор порта отправляется символ «а», светодиод будет мигать с определенной частотой. Если будет отправлен символ «b», светодиод будет мигать быстрее.

Читать также:  Создание нового пользователя

Первый оператор if получает символ из окна Монитор порта, если он доступен. За этим следует конструкция if-else-if (показано ниже).

Выбор частоты мигания светодиода

Этот код просто проверяет, какой символ содержит переменная rx_byte. Если эта переменная содержит ‘a‘, тогда будет запущен код в блоке if , который будет мигать светодиодом с задержкой 500 мс. При этом светодиод включается на 500 мс с помощью функции delay (), а затем выключается на 500 мс.

Если переменная содержит значение «b», тогда светодиод будет мигать быстрее, изменив время включения и выключения светодиода на 200 мс.

Прекращение мигания светодиода

Если будет отправлен какой-либо символ, кроме «a» или «b», то светодиод перестанет мигать, потому что ни одно из условных выражений не будет оцениваться как истинное.

Когда оценивается выражение

Обратите внимание, что этот код находится в основном цикле Arduino, поэтому условные выражения будут оцениваться каждый раз в цикле. Если получен символ, который заставляет условное выражение быть истинным, то это условие будет истинным каждый раз в цикле, пока не будет получен новый символ. Это связано с тем, что символ сохраняется в переменной и не изменяется, пока не будет перезаписан новым символом.

Читать также:  PHP для Arduino — часть 1

Конструкция if-else-if-else

Точно так же, как мы могли бы добавить оператор else под оператором if, мы можем добавить оператор else под конструкцией if-else-if, как показано на рисунке ниже.

Этот скетч работает так же, как и предыдущий, за исключением того, что при отправке любого символа, кроме «a» или «b», запускается блок else, который мигает светодиодом даже быстрее, чем предыдущие две частоты мигания.

Когда скетч начинает работать, светодиод мигает с максимальной скоростью, запускается код в блоке else. Так происходит потому, что переменная rx_byte инициализируется значением 0, который, конечно, не является символами ‘a‘ или ‘b‘.

Если вы хотите, чтобы светодиодный индикатор мигал с минимальной скоростью при запуске скетча, то инициализируйте переменную как ‘a‘, как показано ниже:

Оценка большего количества условных выражений

Еще больше условных выражений можно оценить, добавив больше операторов else if после первого оператора if, как показано здесь:

Задачу можно выполнить только в том случае, если ни одно из условных выражений не имеет значения истина, в конце можно добавить условие else, как показано ниже:

Читать также:  Механический светодиодный светильник-тюльпан на Arduino

Вывод

Вот и подошла к концу наша статья о конфигурации операторов if-else-if. В следующей статье мы поговорим о логических операторах.

С Уважением, МониторБанк

Добавить комментарий