Логические операторы if … else Arduino

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

Конструкция if в Arduino проверяет условие, если оно верно то выполняется блок кода в фигурных скобках. Без фигурных скобок выполнится только одна строчка кода следующая за условным оператором. Рекомендуем всегда использовать фигурные скобки, так как в этом случае сложнее допустить ошибку в программе. Рассмотрим с примерами условия, порядок условий и операторы сравнения Ардуино.

Условия if else Arduino описание

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

    if (water > 100) { digitalWrite(12, HIGH); digitalWrite(10, LOW); }

    if (water < 100) { digitalWrite(12, LOW); digitalWrite(10, HIGH); }

Конструкция if..else предоставляет больший контроль над программой, чем один оператор if. И позволяет определить действия не только для случая, когда выражение истинно, но и для противоположного случая (когда значение выражения ложно):

    if (water > 100) { digitalWrite(12, HIGH); digitalWrite(10, LOW); }

    else { digitalWrite(12, LOW); digitalWrite(10, HIGH); }

Arduino if else несколько условий

За else в Arduino IDE может следовать еще один if, создавая целую цепочку проверок. Проверки условий будут выполняться друг за другом, пока не встретится истинное выражение. При этом будет выполнен блок кода, следующий за условием:

    if (water > 100) { digitalWrite(12, HIGH); digitalWrite(10, LOW); }

    else if (water > 200) { digitalWrite(12, LOW); digitalWrite(10, HIGH); }

    else if (water > 300) { digitalWrite(12, HIGH); digitalWrite(10, HIGH); }

    else { digitalWrite(12, LOW); digitalWrite(10, LOW); }

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

Операторы if else Arduino примеры

Пример конструкции if else Arduino при подключении фоторезистора:

#define SENSOR A0
#define LED 9

unsigned int value = 0;
 
void setup() {
  pinMode(LED, OUTPUT);
  pinMode(SENSOR, INPUT);
}
 
void loop() {
  // Считываем значение с фоторезистора на аналоговом входе A0
  value = analogRead(SENSOR);
  
  // Если значение value на входе A0 меньше 500, включаем светодиод
  if (value<500) { digitalWrite(LED, HIGH); }

  // В противном случае (если value>500), выключаем светодиод 
  if (value>500) { digitalWrite(LED, LOW); }
}

Операторы равнения, порядок условий

Операторы сравнения Arduino

x == y (x равно y)
x != y (x не равно y)
x < y (x меньше y)
x > y (x больше y)
x <= y (x меньше или равно y)
x >= y (x больше или равно y)

Не путайте знак равенства ‘=‘ и оператор сравнения ‘==‘. Использование знака равенства в условном операторе if может дать другой результат при выполнении программы (скетча). Например, if (y = 100) не тоже самое, что if (y==100). Знак равенства – это оператор присваивания, который устанавливает значение переменной равным 40 , а не проверяет значение переменной на равенство 100.

Логические операторы (not and or) Arduino

Для связи нескольких логических величин используются логические операторы:

! (not) логическое НЕ, отрицание
&& (and) логическое И
|| (or) логическое ИЛИ

    if (water > 100 && value > 100) { digitalWrite(12, HIGH); digitalWrite(10, LOW); }

    else { digitalWrite(12, LOW); digitalWrite(10, HIGH); }

Порядок условий

Порядок условий играет важную роль при оптимизации кода и попытке сделать скетч более быстрым. Дело в том, что логические выражения/величины проверяются слева направо, и если первая проверка делает выражение неверным, то дальнейшая проверка условий прекращается. В примере, если условие water > 100 является ложным, то следующее выражение value > 100 уже не проверяется.

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Загрузка...

Подборка на тему: Логические операторы if … else Arduino

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *