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