Введение
Добро пожаловать в ваш первый проект с цифровым входом на Arduino! В этом руководстве вы соберете схему, в которой кнопка управляет светодиодом. При нажатии кнопки светодиод загорается; при отпускании — гаснет. Этот простой проект познакомит вас с чтением цифровых входов, использованием внутренних подтягивающих резисторов и написанием чистого кода для Arduino.
Мы будем использовать браузерный симулятор Velxio, который предоставляет точную SPICE-среду, позволяя тестировать схему без какого-либо оборудования. Давайте начнем!
Схема подключения

Схема состоит из трех основных компонентов:
- Arduino Uno — мозг операции.
- Кнопка — тактовый переключатель, который замыкает два контакта при нажатии.
- Красный светодиод — выходное устройство.
Детали подключения
-
Кнопка к Arduino:
- Один вывод кнопки (контакт
1.l) подключается к цифровому пину 2 Arduino синим проводом (#00aaff). - Другой вывод (контакт
2.l) подключается к GND черным проводом.
- Один вывод кнопки (контакт
-
Светодиод к Arduino:
- Анод (длинная ножка, контакт
A) подключается к цифровому пину 13 Arduino красным проводом (#ff0000). - Катод (короткая ножка, контакт
C) подключается к GND черным проводом.
- Анод (длинная ножка, контакт
Обратите внимание, что у кнопки нет внешнего подтягивающего резистора. Вместо этого мы будем использовать внутренний подтягивающий резистор Arduino в коде. Когда кнопка не нажата, входной пин подтянут к HIGH; при нажатии он читается как LOW.
Разбор кода

Вот полный скетч для Arduino:
// Button LED Control
// Press button to turn LED on
const int BUTTON_PIN = 2;
const int LED_PIN = 13;
void setup() {
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(LED_PIN, OUTPUT);
}
void loop() {
int buttonState = digitalRead(BUTTON_PIN);
if (buttonState == LOW) {
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
}
Пояснение
- Константы:
BUTTON_PINустановлен на 2,LED_PIN— на 13. Использование констант делает код более читаемым и удобным для изменения. setup():pinMode(BUTTON_PIN, INPUT_PULLUP)настраивает пин 2 как вход с включенным внутренним подтягивающим резистором. Это означает, что пин по умолчанию читается как HIGH, и как LOW при нажатии кнопки (которая подключает его к GND).pinMode(LED_PIN, OUTPUT)устанавливает пин 13 как выход для управления светодиодом.
loop():digitalRead(BUTTON_PIN)читает состояние кнопки. Если оно LOW (кнопка нажата), мы включаем светодиод с помощьюdigitalWrite(LED_PIN, HIGH). В противном случае выключаем его.
Ключевые концепции
Цифровой вход и подтягивающие резисторы
Когда цифровой пин настроен как вход, он читает либо HIGH (5В), либо LOW (0В). Без подтягивающего или стягивающего резистора пин может «плавать» между состояниями, вызывая нестабильные показания. Внутренний подтягивающий резистор (обычно 20-50 кОм) обеспечивает стабильный HIGH, когда кнопка разомкнута. Нажатие кнопки подключает пин напрямую к GND, переопределяя подтяжку и давая показание LOW.
Дребезг контактов
Механические кнопки часто «дребезжат», вызывая множество быстрых переключений. В этом простом примере мы игнорируем дребезг, так как светодиод реагирует быстро, и эффект минимален. Для более критичных приложений можно добавить небольшую задержку или использовать библиотеку для подавления дребезга.
Использование констант
Определение номеров пинов как констант в начале скетча упрощает изменение подключения без поиска по всему коду. Это также улучшает читаемость.
Частые ошибки и советы по отладке
- Подключение кнопки: Убедитесь, что один вывод идет к пину Arduino, а другой — к GND. Если подключить оба вывода к одной линии, кнопка не будет работать.
- Полярность светодиода: Анод (длинная ножка) должен подключаться к цифровому пину, а катод (короткая ножка) — к GND. Переполюсовка не повредит светодиод, но он не загорится.
- Подтяжка не включена: Если вы забудете
INPUT_PULLUPи используете обычныйINPUT, пин будет «плавать», и светодиод может хаотично мигать. - Неверные номера пинов: Перепроверьте, что код соответствует подключению. В этом примере кнопка на пине 2, светодиод на пине 13.
Использование симулятора Velxio

Нажмите кнопку Run на панели инструментов, чтобы скомпилировать и запустить симуляцию. Затем вы можете нажать кнопку на холсте, чтобы увидеть реакцию светодиода.

Используйте панель инструментов холста, чтобы приостановить, сбросить или изменить скорость симуляции.

Чтобы добавить больше компонентов, откройте окно выбора компонентов и просмотрите категории, такие как «Input» или «Output».

Если вам нужны дополнительные библиотеки (например, для подавления дребезга), используйте менеджер библиотек.
Предлагаемые расширения
После того как базовая схема заработает, попробуйте эти улучшения:
- Режим переключения: Измените код так, чтобы каждое нажатие включало или выключало светодиод, а не удерживало его.
- Несколько светодиодов: Добавьте больше светодиодов и кнопок, чтобы создать простую панель ввода.
- Подавление дребезга: Реализуйте программное подавление дребезга с помощью задержки 50 мс или таймера.
- Монитор порта: Выводите состояние кнопки в монитор порта для отладки.
- ШИМ-яркость: Замените цифровую запись на
analogWrite(), чтобы управлять яркостью светодиода в зависимости от длительности нажатия кнопки.
Призыв к действию
Готовы собрать свой собственный светодиод, управляемый кнопкой? Откройте живой пример на Velxio и начинайте экспериментировать: Пример кнопки и светодиода. Никакого оборудования не требуется — только ваш браузер. Удачного творчества!