СОДЕРЖАНИЕ ►
Включение светодиода кнопкой Ардуино можно осуществить различными способами — можно управлять светодиодом одной или двумя кнопками, а можно плавно менять яркость светодиода. Рассмотрим, все варианты подключения кнопки и светодиода к плате Arduino Uno с примерами программ. Рассмотрев представленные скетчи, вы сможете использовать в своих проектах тактовые кнопки для управления Ардуино.
Ардуино кнопка со светодиодом

Включение и выключение светодиода кнопкой Ардуино производится с помощью подключения одной тактовой кнопки к цифровому пину без подтягивающего резистора. Дело в том, что платы Arduino имеют встроенные резисторы, которыми можно управлять. Для этого следует использовать в pinMode() параметр INPUT_PULLUP, которая сконфигурирует пин на вход с подтягивающим резистором.
Обратите внимание, что при использовании INPUT_PULLUP происходит подтяжка цифрового входа к 5 вольтам, поэтому значение входящего сигнала будет инвертирован. То есть, при отпущенной кнопке, которая подключена к заземлению — GND, на цифровом входе будет высокий сигнал. При нажатии на кнопку — на входе, который сконфигурирован с помощью INPUT_PULLUP, будет низкий сигнал.
Как подключить кнопку и светодиод к Ардуино
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega;
- макетная плата;
- светодиод;
- 2 резистора 220 Ом;
- 2 тактовых кнопки;
- провода «папа-папа».

Для переключения светодиода кнопкой Ардуино соберите схему, как на изображении выше. Обратите внимание, что тактовая кнопка на макетной плате подключена к микроконтроллеру без подтягивающего резистора. Пин 2 подключен к 5V через встроенный резистор, поэтому при отпущенной кнопке на входе пине 2 будет высокий уровень сигнала, а при нажатии кнопки будет низкий уровень.
Скетч. Управление светодиодом Ардуино через кнопку
boolean buttonWasUp = true; boolean ledEnabled = false; void setup() { pinMode(10, OUTPUT); pinMode(2, INPUT_PULLUP); } void loop() { // узнаем, отпущена ли кнопка сейчас boolean buttonIsUp = digitalRead(2); // если кнопка была отпущена и не отпущена сейчас if (buttonWasUp && !buttonIsUp) { // исключаем дребезг контактов тактовой кнопки delay(10); // и считываем сигнал с кнопки снова buttonIsUp = digitalRead(2); // если кнопка нажата, то переворачиваем сигнал светодиода if (!buttonIsUp) { ledEnabled = !ledEnabled; digitalWrite(10, ledEnabled); } } // запоминаем состояние кнопки для новой итерации buttonWasUp = buttonIsUp; }
Пояснения к коду:
boolean— это глобальная переменная Ардуино, которая может принимать всего два значения – true (истина) и false (ложь);- задержка
delay(10);в программе позволяет избежать «дребезг контактов» кнопки и исключить ложное срабатывание.

Скетч. Управление двумя кнопками одним светодиодом
boolean button1WasUp = true; boolean button2WasUp = true; void setup() { pinMode(10, OUTPUT); digitalWrite(10, LOW); pinMode(2, INPUT_PULLUP); pinMode(4, INPUT_PULLUP); } void loop() { // узнаем, отпущены ли две кнопки сейчас boolean button1IsUp = digitalRead(2); boolean button2IsUp = digitalRead(4); // если кнопка 1 была отпущена и не отпущена if (button1WasUp && !button1IsUp) { delay(10); // повторно считываем сигнал с кнопки 1 button1IsUp = digitalRead(2); if (!button1IsUp) { digitalWrite(10, LOW); } } // если кнопка 2 была отпущена и не отпущена if (button2WasUp && !button2IsUp) { delay(10); // повторно считываем сигнал с кнопки 2 button2IsUp = digitalRead(4); if (!button2IsUp) { digitalWrite(10, HIGH); } } // запоминаем состояние двух кнопок ардуино button1WasUp = button1IsUp; button2WasUp = button2IsUp; }
Пояснения к коду:
- данный пример программы позволяет включать светодиод нажатием одной кнопки и выключать светодиод нажатием второй кнопки;
- задержка Ардуино
delay(10);позволяет избежать «дребезг контактов» кнопки и исключить возможность ложного срабатывания.
Следующий пример тоже потребует для подключения к Ардуино две кнопки, два светодиода, как на предыдущей схеме. Но вместо простого включения/выключения диода, мы будем увеличивать и уменьшать яркость светодиода с помощью ШИМ сигнала микроконтроллера. Загрузите пример программы для «Светодиод и кнопка Ардуино ШИМ», чтобы получить понятие о принципе работы кнопки с Arduino Uno.
Скетч. Управление яркостью светодиода кнопкой Ардуино
#define PLUS_BUTTON 2 #define MINUS_BUTTON 4 int brightness = 100; boolean plusUp = true; boolean minusUp = true; void setup() { pinMode(10, OUTPUT); pinMode(PLUS_BUTTON, INPUT_PULLUP); pinMode(MINUS_BUTTON, INPUT_PULLUP); } void loop() { analogWrite(10, brightness); // реагируем на нажатия кнопки с помощью функции handleClick plusUp = handleClick(PLUS_BUTTON, plusUp, +20); minusUp = handleClick(MINUS_BUTTON, minusUp, -20); } boolean handleClick(int buttonPin, boolean wasUp, int delta) { boolean isUp = digitalRead(buttonPin); if (wasUp && !isUp) { delay(10); isUp = digitalRead(buttonPin); // если был клик кнопки, меняем яркость в пределах от 0 до 255 if (!isUp) brightness = constrain(brightness + delta, 0, 255); } return isUp; }
Пояснения к коду:
- для подключения светодиода следует использовать пин с ШИМ модуляцией;
- начальное значение яркости
int brightnessравен ста, в программе прирост и уменьшение яркости (20) можно поменять по своему усмотрению.
Заключение. Мы рассмотрели сразу несколько примеров для управления светодиодом Ардуино с помощью кнопки. Вы узнали, что светодиодом можно управлять с помощью одной кнопки, или производить включение/выключение двумя кнопками. Кроме того, можно менять яркость с помощью кнопки и ШИМ сигнала. Все рассмотренные примеры можно использовать в различных проектах на Arduino для начинающих.










У вас оперчатка в коде для диода и одной кнопки.
Спасибо. Нашли ошибку в программе и исправили
Не совсем понятно, для чего на первой и второй схеме брошен провод с 5V на макетку, если он потом не используется. Или я чего то не понял, или просмотрел))).
Да, вы правы. 5V в схеме не используется
подскажите , а можно изменить скетч (Управление светодиодом Ардуино через кнопку) так , что бы светодиод не горел , а мигал , нажал кнопку он мигает , еще раз нажал не мигает ?
дык добавьте две строчку с выключением и задержку между ними и будет МЯГАТЬ)
На основе этого кода можно хоть серво сделать с кнопкой) Тип какая то кнопка значит столько то градусов на серво. Вообще тут все просто)
Как поверить, горит ли светодиод вообще?
Подключить светодиод к 13 пину и нажать на перезагрузку платы
Код для Управление двумя кнопками одним светодиодом, очень сильно помог. Спасибо большое!
Объясните тупому валенку почему в 1000 гайдов для подключении кнопки используется резистор на 10 кОм а тут нет?
потому чо он не нужен
Ну он так то не нужен) Во многих гайдах вообще говорится что если не подключить резистор то будет бум и светодиод сгорит) Но это не так! Но все таки, если есть возможность подключить резистор то можно так и сделать!( На всякий пожарный)
я хочу вам сказать мои друзья что тут допущена ошибка в последнеи обновлении нашего любимого приложения вокви изменена первая строчка булдьте внимательны друзья
а у меня не сработало вообще,может подскажете в чём может быть ошибка?