
Видео
Схема

Исходный код
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// Управление светодиодом кнопкой (удержание)
4// ─────────────────────────────────────────
5// Светодиод горит, пока кнопка нажата, и гаснет, когда её отпускают (без
6// фиксации). Показывает чтение кнопки через digitalRead и if-else.
7//
8// Пины:
9// D13 -> Кнопка, другая ножка к 5V
10// D13 -> Резистор 10k к GND (стягивающий, pull-down)
11// D7 -> Светодиод (с резистором 330 ohm)
12
13void setup() {
14 pinMode(13, INPUT); // Вход кнопки (внешний pull-down)
15 pinMode(7, OUTPUT); // Выход светодиода
16}
17
18void loop() {
19 if (digitalRead(13) == HIGH) { // Кнопка нажата?
20 digitalWrite(7, HIGH); // Нажата: светодиод вкл
21 } else {
22 digitalWrite(7, LOW); // Отпущена: светодиод выкл
23 }
24}
25
Частые вопросы
Для чего нужен резистор 10 kΩ?
Это стягивающий резистор: когда кнопка не нажата, он притягивает пин к GND и обеспечивает стабильное чтение LOW. Без этого резистора пин «висел» бы и случайно читал HIGH или LOW, и светодиод мерцал бы сам по себе.
Можно ли подключить кнопку без резистора?
Да, `pinMode(pin, INPUT_PULLUP)` включает встроенный подтягивающий резистор Arduino. В этом случае кнопка подключается между пином и GND, а логика обратная: при нажатии читается LOW, после отпускания — HIGH.
Какие выводы кнопки использовать?
У 4-контактных кнопок два противоположных вывода уже соединены внутри. Поставь кнопку поперёк пустой канавки в центре макетной платы и используй выводы по диагонали; так ты точно выберешь правильные.
Чем режим «удержание» отличается от «вкл/выкл»?
В режиме удержания светодиод горит, только пока ты держишь кнопку. В режиме вкл/выкл (toggle) каждое нажатие меняет состояние светодиода, и он остаётся гореть даже после отпускания кнопки; для этого нужна переменная состояния.
