Главная chevron_right Уроки chevron_right Встроенные примеры chevron_right Управляющие конструкции chevron_right Условный оператор if Statement

Условный оператор if Statement

Узнайте, как использовать оператор if в Arduino, чтобы управлять светодиодом в зависимости от показаний потенциометра на аналоговом входе.

Оператор if() — это фундамент любой логики в программировании. Он позволяет выполнить какое-то действие только тогда, когда выполняется заданное условие. Выглядит это так:

if (someCondition) {
// выполнить действия, если условие истинно
}

Есть расширенный вариант — if-else, который добавляет альтернативную ветку на случай, если условие не выполнилось:

if (someCondition) {
// выполнить действия, если условие истинно
} else {
// выполнить действия, если условие ложно
}

А ещё существует конструкция else-if — она позволяет проверить второе условие, если первое оказалось ложным:

if (someCondition) {
// выполнить действия, если условие истинно
} else if (anotherCondition) {
// выполнить только если первое условие ложно
// а второе условие истинно
}

Операторы if встречаются буквально в каждом скетче. Пример ниже показывает классический сценарий: светодиод на пине 13 (встроенный LED на большинстве плат Arduino) загорается, когда значение на аналоговом входе превышает заданный порог.

Как это работает

Аналоговый вход Arduino возвращает число от 0 до 1023. Потенциометр, подключённый к этому входу, позволяет плавно менять это значение, поворачивая ручку. Оператор if сравнивает текущее значение с порогом: если значение выше — LED включается, если ниже — остаётся выключенным. Это простейший способ превратить аналоговый сигнал в цифровое решение «да/нет».

Необходимое железо

  • Потенциометр или переменный резистор

Схема подключения

Потенциометр подключается к плате Arduino UNO на макетной плате: крайние выводы — к 5V и GND, средний (движок) — к аналоговому входу A0.

Принципиальная схема

Принципиальная схема: потенциометр (ПОТЕНЦИОМЕТР) средним выводом подключён к аналоговому входу A0 платы Arduino UNO. Крайние выводы соединены с 5V и GND.

Код

В скетче переменная analogValue хранит значение, считанное с потенциометра, подключённого к analogPin 0. Это значение сравнивается с порогом threshold. Если аналоговое значение превышает порог — встроенный светодиод на цифровом пине 13 включается. Если analogValue оказывается < (меньше) порога — светодиод остаётся выключенным.

Практические замечания

  • Выбор порога. По умолчанию порог обычно задаётся где-то в середине диапазона (например, 512). Попробуйте менять это значение и наблюдать, при каком повороте ручки загорается LED.
  • Дребезг на границе. Если потенциометр стоит ровно на пороговом значении, светодиод может быстро мигать из-за шумов. Решение — добавить гистерезис: включать при значении выше 520, а выключать только ниже 500.
  • Монитор порта. Добавьте Serial.println(analogValue) внутрь loop(), чтобы видеть реальные значения в Serial Monitor и точнее подобрать порог.

Типичные ошибки

  • Перепутаны = (присваивание) и == (сравнение) внутри условия — это одна из самых частых ошибок у новичков. Напишите if (x = 5) вместо if (x == 5) — и код скомпилируется, но будет работать неправильно.
  • Потенциометр подключён без GND или 5V на крайних выводах — тогда значение на входе будет «плавать» и вести себя непредсказуемо.
  • Забытые фигурные скобки {} при нескольких строках в теле if — без них выполнится только первая строка, остальные будут работать всегда.

Узнать больше

Дополнительные базовые примеры собраны в разделе built-in examples.

Также рекомендуем заглянуть в language reference — подробный справочник по языку программирования Arduino.

Последняя редакция: 2015/07/29, SM