Главная chevron_right Уроки chevron_right Встроенные примеры chevron_right Цифровые примеры chevron_right InputPullupSerial — внутренний подтягивающий резистор и Serial

InputPullupSerial — внутренний подтягивающий резистор и Serial

Как использовать режим INPUT_PULLUP с функцией pinMode() для считывания кнопки через внутренний подтягивающий резистор Arduino.

InputPullupSerial — внутренний подтягивающий резистор и Serial

Этот урок показывает, как применять режим INPUT_PULLUP совместно с функцией pinMode(). Мы будем отслеживать состояние кнопки и передавать результаты через USB, устанавливая serial communication между Arduino и компьютером.

Дополнительно: когда на входе читается HIGH, встроенный светодиод на пине 13 загорается; когда LOW — гаснет.

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

Обычно при подключении кнопки к цифровому входу Arduino требуется внешний резистор, чтобы пин не «висел в воздухе» и не давал случайных значений. Однако в Arduino есть встроенные подтягивающие резисторы (pull-up), которые можно включить программно — режимом INPUT_PULLUP. В этом случае пин через внутренний резистор подтянут к 5 В и по умолчанию читает HIGH. Когда кнопка нажата и замыкает пин на GND, Arduino читает LOW.

Логика инвертирована относительно привычной: кнопка не нажата → 1, кнопка нажата → 0. Это важно учитывать в коде.

Необходимые компоненты

  • Arduino Board
  • Тактовая кнопка (momentary switch) или переключатель
  • Макетная плата (breadboard)
  • Соединительные провода

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

Схема подключения: кнопка соединена с пином 2 и GND платы Arduino UNO на макетной плате.

Подключите два провода к плате Arduino. Чёрный провод соединяет GND с одной ногой кнопки. Второй провод идёт от цифрового пина 2 ко второй ноге кнопки.

Когда кнопка не нажата, цепь разомкнута. Внутренний подтягивающий резистор пина 2 удерживает его на уровне 5 В, поэтому Arduino читает HIGH. При нажатии кнопка замыкает пин на GND, и Arduino читает LOW.

Обратите внимание: внешний резистор здесь не нужен — всё обеспечивает внутренний pull-up. Это упрощает схему и уменьшает количество деталей.

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

Принципиальная схема: кнопка (SWITCH / КНОПКА) подключена между пином 2 и GND платы Arduino UNO.

Код

В функции setup() первым делом запускаем последовательную связь на скорости 9600 бод:

Serial.begin(9600);

Затем настраиваем цифровой пин 2 как вход с включённым внутренним подтягивающим резистором:

pinMode(2,INPUT_PULLUP);

Пин 13 со встроенным светодиодом объявляем как выход:

pinMode(13, OUTPUT);

В основном цикле loop() объявляем переменную типа intdatatype с именем sensorValue и сразу присваиваем ей значение, считанное с пина 2:

int sensorValue = digitalRead(2);

Переменная sensorValue будет равна 1 (HIGH), если кнопка не нажата, и 0 (LOW), если нажата.

Печатаем это значение в Serial Monitor в десятичном формате (DEC):

Serial.println(sensorValue, DEC);

Когда вы откроете Serial Monitor в среде Arduino IDE, вы увидите поток значений: «1» — кнопка отпущена, «0» — кнопка нажата.

Светодиод на пине 13 будет гореть, когда переключатель HIGH, и гаснуть, когда LOW.

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

  • Перепутана логика. Помните: INPUT_PULLUP инвертирует привычную логику. Кнопка нажата → LOW, отпущена → HIGH. Если светодиод ведёт себя «наоборот» — проверьте условие в коде.
  • Кнопка подключена к 5 В вместо GND. При INPUT_PULLUP вторая нога кнопки должна идти именно на GND, иначе при нажатии вы получите конфликт напряжений.
  • Serial Monitor не открывается или показывает мусор. Убедитесь, что скорость в мониторе выставлена 9600 бод — такая же, как в Serial.begin(9600).
  • Дребезг контактов. Механические кнопки могут давать несколько переключений за одно нажатие. Для простых демонстраций это не критично, но в реальных проектах стоит добавить программный или аппаратный антидребезг.

Как проверить результат

  1. Загрузите скетч на плату.
  2. Откройте Serial Monitor (Ctrl+Shift+M) и установите скорость 9600 бод.
  3. Не нажимая кнопку, убедитесь, что в мониторе идут «1», а светодиод на пине 13 горит.
  4. Нажмите и удерживайте кнопку — значения должны смениться на «0», светодиод погаснет.

Где пригодится

Режим INPUT_PULLUP — стандартный приём в большинстве Arduino-проектов с кнопками и переключателями. Он избавляет от необходимости паять внешние резисторы и делает схему компактнее. Используется в клавиатурах, энкодерах, концевых выключателях и других устройствах, где нужно надёжно определять замыкание на землю.

Дополнительные материалы

Больше базовых уроков вы найдёте в разделе built-in examples.

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