Логические операторы в Arduino

Логические операторы в ардуино

Логические операторы в Arduino дают вам еще один элемент контроля над потоком вашей программы. Также известные как логические операторы, они могут быть очень мощными при использовании внутри условия оператора if или цикла while. В этой статье мы обсудим три наиболее распространенных логических оператора — И, ИЛИ и НЕ.

Мы также увидим, как использовать логические операторы в условных операторах для одновременной проверки нескольких переменных на условие. Наконец, мы рассмотрим практический пример, в котором используется логический оператор для генерации состояния напряжения цифрового вывода на Arduino.

Логический оператор И

Логический оператор И (или AND) оценивает две переменные и возвращает истинное значение только в том случае, если обе переменные истинны. Записывается с двумя амперсандами &&.

XYX && Y
TRUEFALSEFALSE
FALSETRUEFALSE
TRUETRUETRUE
FALSEFALSEFALSE
Таблица истинности логического элемента И

Допустим, у нас есть две переменные, x и y.

Если x равно true, а y равно false, результат оператора И равен false.

Точно так же, если x — ложь, а y — истина, то результат — ложь.

И если оба x и y являются ложными, то результат будет ложным.

Только когда оба x и y истинны, результат И становится истинным. Итак, как мы можем это использовать? Допустим, мы хотим создать оператор if, который выполняется только тогда, когда две переменные меньше пяти. Мы можем использовать оператор И в условии оператора if следующим образом:

if(x<5 && y<5) {
   // Код
}

Условие будет выполнено только тогда, когда x меньше пяти и y меньше пяти. У вас может быть столько операторов И в условии, сколько вы хотите. Использование нескольких операторов И в условном операторе позволяет одновременно проверять множество переменных. Условный оператор будет выполняться только тогда, когда все они будут истинными.

Логический оператор ИЛИ

Оператор ИЛИ (или OR) записывается двумя вертикальными полосами ||. С оператором ИЛИ, если какая-либо из переменных верна, результат будет истинным. Это таблица истинности для оператора ИЛИ:

XYX || Y
TRUEFALSETRUE
FALSETRUETRUE
TRUETRUETRUE
FALSEFALSEFALSE
Таблица истинности логического оператора ИЛИ
  • Если x истинно, а y ложно, результат будет истинным.
  • Если x ложно, а y истинно, результат все равно будет истинным.
  • Если оба x и y истинны, результат также будет истинным.
  • Только если и x, и y ложны, результат будет ложным.

Достаточно, чтобы одна из переменных была истинной, чтобы результат был истинным. Например, используя оператор ИЛИ в условии оператора if следующим образом:

if(x<5 || y<5) {
   // Код
}

Условие будет выполнено, если либо x меньше пяти, либо y меньше пяти. Поэтому, если какая-либо переменная меньше пяти, условие будет истинным, и код в теле оператора if будет выполнен. В условном операторе может быть сколько угодно операторов ИЛИ, что позволяет одновременно проверять несколько переменных.

Логический оператор НЕ

Оператор НЕ (или NOT) пишется с восклицательным знаком !.

Задача оператора НЕ делать утверждение true — ложным, а утверждение false — истинным:

  • !true = false
  • !false = true

Оператор НЕ может использоваться для исключения числа или переменной из условия. Например, если вам нужно, чтобы оператор if выполнялся для каждого значения x, кроме числа пять, вы могли бы записать условие следующим образом:

if(x != 5) {
   // Код
}

Также его можно использовать и в других местах, например, для переключения состояния напряжения цифрового вывода. Взгляните на стандартный код Arduino для переключения состояния напряжения цифрового вывода (контакт 13) на высокий и низкий уровень:

digitalWrite(13, HIGH);   
delay(1000);              
digitalWrite(13, LOW);   
delay(1000); 

С помощью оператора НЕ этот код можно сократить до двух строк:

digitalWrite(13, !digitalRead(13));
delay(1000); 

Здесь мы используем digitalRead(13) с оператором НЕ перед ним. С помощью этого кода Arduino сначала считает состояние напряжения на контакте 13. Если на контакте 13 высокий уровень, digitalRead(13) вернет высокое значение. Оператор НЕ сделает высокое (true) значение низким (false), поэтому функция digitalWrite() переключит вывод 13 в состояние низкого напряжения.

В следующий раз в цикле функция digitalRead() получит низкое значение на выводе 13. Но оператор НЕ инвертирует значение и аргумент в функции digitalWrite() станет высоким. Таким образом, контакт 13 будет установлен в состояние высокого уровня напряжения.

Это заставляет контакт 13 переключаться между состояниями высокого и низкого уровнями напряжения. Вы можете проверить это, подключив светодиод к контакту 13 (или использовать встроенный на плате). Светодиод должен мигать один раз в секунду.

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

Документация

Компоненты

  • Arduino NANO
  • Arduino UNO
  • Arduino MEGA
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии