Главная chevron_right Уроки chevron_right Встроенные примеры chevron_right Основы chevron_right Digital Read Serial: чтение кнопки и вывод в Serial Monitor

Digital Read Serial: чтение кнопки и вывод в Serial Monitor

Узнайте, как считывать состояние кнопки с цифрового пина Arduino и выводить результат в Serial Monitor через USB-соединение.

В этом уроке разберём один из самых базовых навыков работы с Arduino — чтение цифрового сигнала с кнопки и передачу результата на компьютер через USB. Именно с таких простых вещей начинается понимание того, как микроконтроллер «общается» с внешним миром.

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

  • Тактовая кнопка, переключатель или кнопка-тумблер
  • Резистор 10 кОм
  • Провода для макетной платы
  • Макетная плата (breadboard)

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

Схема подключения: кнопка и резистор на макетной плате, соединённые с Arduino UNO

Подключите к плате три провода. Красный и чёрный идут в длинные вертикальные шины макетной платы — они обеспечивают доступ к питанию 5 В и земле. Третий провод соединяет цифровой пин 2 с одной из ножек кнопки. Та же ножка кнопки через подтягивающий резистор (pull-down, 10 кОм) подключается к земле. Вторая ножка кнопки идёт к питанию 5 В.

Кнопки замыкают цепь только в момент нажатия. Когда кнопка отпущена, пин через резистор соединён с землёй и читается как LOW (0). Когда кнопка нажата, цепь замыкается на 5 В, и пин читается как HIGH (1).

Важно: зачем нужен резистор?

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

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

Принципиальная схема: Arduino UNO, тактовая кнопка (PUSH BUTTON) и подтягивающий резистор 10 кОм (10kΩ RESISTOR)

Код

Разберём программу по шагам.

Шаг 1. Инициализация Serial-соединения

Первое, что делается в setup() — открывается последовательный порт на скорости 9600 бод:

Serial.begin(9600);

Эта строка устанавливает соединение между платой и компьютером через USB со скоростью 9600 бит в секунду. Именно с этой скоростью нужно будет открыть Serial Monitor в IDE.

Шаг 2. Настройка пина как входа

Далее объявляем цифровой пин 2 входным — он будет считывать сигнал с кнопки:

pinMode(2,INPUT);

Шаг 3. Чтение и вывод состояния кнопки

В основном цикле loop() нужно прочитать состояние пина и отправить его на компьютер. Состояние кнопки — это всегда либо 1 (HIGH), либо 0 (LOW), поэтому для хранения значения подходит тип intdatatype.

Объявляем переменную sensorValue и сразу присваиваем ей результат чтения пина 2:

int sensorValue = digitalRead(2);

Затем отправляем это значение в Serial Monitor:

Serial.println(sensorValue);

Функция Serial.println() выводит значение в виде десятичного числа и переходит на новую строку.

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

Откройте Serial Monitor в Arduino IDE (иконка лупы в правом верхнем углу или сочетание клавиш Ctrl+Shift+M). Убедитесь, что скорость порта выставлена на 9600 baud.

  • Кнопка не нажата → в мониторе непрерывный поток 0
  • Кнопка нажата → поток меняется на 1

Если значения скачут хаотично без нажатия — скорее всего, резистор подключён неправильно или пин действительно «висит в воздухе».

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

  • Забыли резистор — пин floating, показания нестабильные. Всегда используйте pull-down или pull-up резистор при работе с кнопками.
  • Перепутали скорость порта — в Serial Monitor установлена скорость, отличная от 9600. Данные будут выглядеть как каша из символов.
  • Неправильное подключение кнопки — у тактовых кнопок 4 ножки, но внутри они попарно соединены. Убедитесь, что подключаете ножки из разных пар.
  • Пин 0 или 1 вместо пина 2 — пины 0 и 1 используются для Serial-коммуникации (RX/TX). Подключение к ним кнопки нарушит работу Serial Monitor.

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

Чтение цифрового сигнала — основа огромного количества проектов: управление освещением, обнаружение нажатия, считывание состояния концевых выключателей, кнопки «старт/стоп» в устройствах. Понимание разницы между HIGH и LOW, а также роли подтягивающих резисторов критически важно для любого проекта с дискретными входами.

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

Больше базовых примеров можно найти в разделе built-in examples.

Подробное описание всех функций языка Arduino собрано в language reference.

Последнее обновление: 29.07.2015, SM