Подключение кнопки к Arduino
Тактовая кнопка
Кнопка к Arduino Uno и Nano включается между цифровым выводом и землёй с pinMode(pin, INPUT_PULLUP). Нажатие даёт LOW, отпускание — HIGH; внешний резистор не нужен.
Схема подключения кнопки к Arduino
| Кнопка | Arduino Uno |
|---|---|
| 1.l | D2 |
| 2.l | GND |
Схема из примера «Arduino Uno: кнопка со внутренней подтяжкой».
Выводы Кнопка
| Вывод | Назначение |
|---|---|
| 1.l | контакт 1, левая ножка |
| 1.r | контакт 1, правая ножка (соединена с 1.l внутри) |
| 2.l | контакт 2, левая ножка |
| 2.r | контакт 2, правая ножка (соединена с 2.l внутри) |
Код для Arduino
// Кнопка на выводе 2 и светодиод на выводе 8.
//
// INPUT_PULLUP включает резистор внутри контроллера — внешний не
// нужен. Вывод при этом всё время подтянут к питанию и читается как
// HIGH; кнопка соединяет его с землёй, поэтому НАЖАТИЕ — это LOW.
// Перевёрнутая логика удивляет каждого, кто видит её впервые.
const int BUTTON = 2;
const int LED = 8;
void setup() {
pinMode(BUTTON, INPUT_PULLUP);
pinMode(LED, OUTPUT);
Serial.begin(9600);
}
void loop() {
bool pressed = digitalRead(BUTTON) == LOW;
digitalWrite(LED, pressed ? HIGH : LOW);
delay(50);
}
Скетч можно править и запускать в симуляторе без платы и установки среды.
Что учесть на Arduino
- Внутренняя подтяжка Arduino — около 20–50 кОм; на длинном проводе ставят внешний резистор 4,7–10 кОм.
- Чтобы ловить нажатие мгновенно, кнопку подключают к D2 или D3 и используют
attachInterrupt().
В железе
Ножки, соединённые внутри, — те, что смотрят друг на друга через длинную сторону корпуса. Кнопка, поставленная на макетку «не той стороной», замкнута всегда.
Частые ошибки при подключении к Arduino
- Подключить кнопку между выводом и 5 В без подтяжки вниз: в отпущенном состоянии вход «плавает» и срабатывает от наводок.
- Не обработать дребезг: одно нажатие считается за несколько.
- Вход без подтяжки (
INPUTвместоINPUT_PULLUP) — отпущенная кнопка читается случайно, от касания пальцем провода. - Одно нажатие считается несколько раз — дребезг. Нужен фильтр по времени.
- Кнопка подключена к двум соединённым внутри ножкам — не работает никогда (или работает всегда).
Ещё по теме
- плата Подключение кнопки к ESP32
- деталь Кнопка: подключение к ESP32 и Arduino
- урок Кнопка и подтяжка
- урок Arduino Uno: кнопка
Другие детали для Arduino
HC-SR04DHT22 (AM2302)BME280DS3231SSD1306 OLED 0,96″LCD 1602 с I2CMAX7219TM1637Модуль релеKY-040Клавиатура 4×4HX711ФоторезисторМодуль microSDRGB-светодиодСервопривод SG9074HC595Шаговый двигательПотенциометрПьезопищалкаСветодиодПолзунковый переключательHC-SR501TTP223Датчик влажности почвыMQ-2LM35Джойстик KY-023DHT11HTU21D