Главная chevron_right Переменные и константы chevron_right Константы chevron_right INPUT | INPUT_PULLUP | OUTPUT

INPUT | INPUT_PULLUP | OUTPUT

Константы INPUT, INPUT_PULLUP и OUTPUT задают режим работы вывода в pinMode(): чтение сигнала, вход со встроенной подтяжкой или активный выход.

Полная статья

Описание

INPUT, INPUT_PULLUP и OUTPUT — три режима, которые передаются в pinMode(), чтобы сообщить микроконтроллеру, как использовать конкретный вывод. Выбор режима влияет не только на поведение программы, но и на физическое электрическое состояние контакта.

    pinMode(2, INPUT);
    pinMode(3, INPUT_PULLUP);
    pinMode(13, OUTPUT);

INPUT

Когда вывод настроен как INPUT, он переходит в режим чтения: Arduino может определять, какой сигнал подаётся снаружи. Этот режим подходит для кнопок, цифровых датчиков и любых источников логического сигнала. Входной вывод практически не нагружает подключённую цепь.

Однако у незащищённого входа есть важная особенность: если он не подключён к чёткому источнику сигнала, его состояние становится непредсказуемым. Такой вход называют «плавающим» — digitalRead() будет возвращать то HIGH, то LOW хаотично, реагируя на наводки и помехи.

Чтобы вход всегда имел определённое состояние в отсутствие сигнала, используют резисторы:

  • pull-up подтягивает вход к напряжению питания (HIGH), пока кнопка не замкнёт его на землю;
  • pull-down удерживает вход у земли (LOW), пока кнопка не подаст на него питание.

Обычно для этих целей берут резисторы около 10 кОм: они надёжно удерживают вход в заданном состоянии и не создают заметной лишней нагрузки на цепь.

INPUT_PULLUP

INPUT_PULLUP — это тот же режим входа, но с автоматически включённым внутренним подтягивающим резистором микроконтроллера. Внешний резистор в большинстве случаев уже не нужен: достаточно подключить кнопку между выводом и GND.

Важно понимать, что логика при таком подключении инвертируется по сравнению с интуитивно ожидаемой:

  • Кнопка отпущена → вход читает HIGH (вывод подтянут к питанию).
  • Кнопка нажата → вход читает LOW (вывод замкнут на землю).

Это поведение поначалу кажется непривычным, но на практике INPUT_PULLUP упрощает схему и делает её надёжнее: меньше деталей, меньше ошибок при монтаже.

OUTPUT

В режиме OUTPUT вывод становится активным источником сигнала. Через digitalWrite() можно выставить на нём HIGH или LOW. Этот режим используют для управления светодиодами, реле через транзистор, передачи управляющих сигналов другим устройствам и построения простых цифровых интерфейсов.

Выводы ATmega способны отдавать или принимать ограниченный ток. В документации нередко упоминается максимум 40 мА на вывод, однако для стабильной работы лучше держаться заметно ниже этого предела и уточнять ограничения для конкретной платы.

Если нагрузка потребляет значительный ток — мотор, светодиодная лента, реле — подключайте её через транзистор, MOSFET, специализированный драйвер или готовый модуль реле. Прямое подключение мощной нагрузки к выводу Arduino может повредить микроконтроллер.

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

  • Никогда не соединяйте вывод, установленный в HIGH, напрямую с GND — это короткое замыкание, которое может вывести плату из строя.
  • Не подавайте на вход напряжение ниже GND или выше напряжения питания платы: это выходит за допустимые пределы и может повредить микроконтроллер.
  • Для кнопок INPUT_PULLUP удобнее INPUT с внешним резистором: схема проще, деталей меньше, а надёжность не страдает.
  • Всегда явно задавайте режим вывода в setup() — не полагайтесь на состояние по умолчанию: это делает код понятнее и поведение схемы предсказуемым.
  • Если digitalRead() возвращает нестабильные значения без видимой причины, первым делом проверьте, не оказался ли вход «плавающим» из-за отсутствия подтяжки.

Полезные материалы