Главная chevron_right Уроки chevron_right Встроенные примеры chevron_right Цифровые примеры chevron_right Как подключить и запрограммировать кнопку (Button)

Как подключить и запрограммировать кнопку (Button)

Учимся подключать тактовую кнопку к Arduino и управлять встроенным светодиодом на пине 13 с помощью pull-down резистора.

Тактовые кнопки и переключатели замыкают цепь между двумя точками в момент нажатия. В этом уроке мы научимся читать состояние кнопки и зажигать встроенный светодиод на пине 13, пока кнопка удерживается нажатой.

Необходимое оборудование

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

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

Схема подключения кнопки к Arduino UNO на макетной плате

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

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

  • Кнопка отпущена — между ножками нет контакта, пин 2 через резистор «притянут» к земле, и мы читаем LOW.
  • Кнопка нажата — ножки замыкаются, пин 2 подключается к 5 В, и мы читаем HIGH.

Можно собрать и обратную схему: использовать pull-up резистор, который держит вход в состоянии HIGH, а при нажатии кнопки сигнал уходит в LOW. В этом случае поведение скетча инвертируется — светодиод будет гореть постоянно и гаснуть при нажатии.

Важно: если оставить цифровой пин ни к чему не подключённым, светодиод начнёт мигать хаотично. Это явление называется «плавающий вход» (floating input) — пин случайным образом принимает значение HIGH или LOW под влиянием электромагнитных помех. Именно поэтому всегда необходимо использовать pull-up или pull-down резистор.

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

Принципиальная схема подключения кнопки (переключателя) и резистора 10 кОм к Arduino UNO

Код

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

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

  • Забытый резистор. Без pull-down или pull-up резистора пин «висит в воздухе» и показания будут непредсказуемыми. Альтернатива — использовать внутренний pull-up Arduino, передав INPUT_PULLUP в pinMode().
  • Неправильное направление кнопки. Большинство тактовых кнопок имеют четыре ножки, попарно соединённые внутри. Убедитесь, что провода идут к разным парам, иначе кнопка будет «нажата» всегда.
  • Дребезг контактов. При быстром переключении кнопка может дать несколько коротких импульсов вместо одного. Для простых задач это не критично, но если нужно считать нажатия — добавьте программную задержку (delay(50)) или используйте библиотеку Bounce2.

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

Откройте скетч, загрузите его на плату и нажмите кнопку. Встроенный светодиод (помечен L рядом с пином 13) должен загораться при нажатии и гаснуть при отпускании. Если поведение обратное — проверьте, не перепутана ли схема с pull-up на pull-down.

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

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

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

Последнее обновление: 2015/07/28, SM