СОДЕРЖАНИЕ ►
Рассмотрим в этой статье, как подключить модуль с кнопкой ky-004 к Arduino Uno и представим простой скетч (программу) для включения/выключения светодиода. Модуль тактовой кнопки часто входит в комплект стартового набора для начинающих или Sensor Kit. Способом подключения к микроконтроллеру ничем не отличается от любого другого аналогового сенсора, например, датчика вибрации для Arduino.
Характеристики модуля кнопки Ардуино
KY-004 — это модуль для микроконтроллера Arduino Nano с тактовой кнопкой, выполненный на печатной плате. Модуль имеет нормально разомкнутые контакты, то есть контакты замыкаются при нажатии на кнопку, а на выходе датчика появляется напряжение низкого уровня. Между контактом выхода «S» и средним контактом, который подключается к пину «5V» Arduino, впаян резистор сопротивлением 10 кОм.
Таким образом, макетная плата потребуется только для подключения светодиода к микроконтроллеру. С помощью модуля кнопки можно также включать и выключать лазерный светодиод, шаговый двигатель и любое другое устройство. Также можно собрать простую игру на микроконтроллере Ардуино с LCD дисплеем, которая представлена на нашем сайте в разделе «Проекты на Ардуино» для начинающих.
Подключение тактовой кнопки к Ардуино
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega;
- модуль с кнопкой KY-004;
- один светодиод и резистор;
- беспаечная макетная плата;
- провода «папа-папа», «папа-мама».

| KY-004 | Arduino Uno | Arduino Nano | Arduino Mega |
| — | GND | GND | GND |
| + | 5V | 5V | 5V |
| S | A1 | A1 | A1 |
Подключать модуль можно, как к цифровому пину общего назначения, так и к пинам входа для аналоговых датчиков. KY-004 позволяет подключить кнопку к Ардуино без использования макетной платы, в остальном нет никаких отличий от подключения обычной тактовой кнопки к микроконтроллеру. Соберите схему, как на картинке и выше и загрузите следующий скетч (ссылка для скачивания программы здесь).
Счетч для модуля с кнопкой Arduino (KY-004)
// кнопка изначально отпущена, а свет выключен boolean buttonWasUp = true; boolean buttonIsUp = false; boolean ledEnabled = false; void setup() { pinMode(13, OUTPUT); pinMode(A1, INPUT_PULLUP); } void loop() { // проверяем, отпущена ли кнопка сейчас buttonIsUp = digitalRead(A1); // если кнопка была отпущена и не отпущена сейчас if (buttonWasUp && !buttonIsUp) { // исключаем ложный сигнал при «дребезге» контактов // и считываем сигнал с кнопки повторно delay(10); buttonIsUp = digitalRead(A1); // если кнопка не была до этого момента нажата // значит был клик и переворачиваем сигнал светодиода if (!buttonIsUp) { ledEnabled = !ledEnabled; digitalWrite(13, ledEnabled); } } // запоминаем положение кнопки для следующей итерации buttonWasUp = buttonIsUp; }
Пояснения к коду:
- вход кнопки (пин A1) сконфигурирован, как
INPUT_PULLUP. При нажатии на кнопку на входе будет логический «нуль» (значение false), значение true («истина») в переменной buttonIsUp будет, когда тактовая кнопка отпущена; - в digitalWrite передается не значение HIGH или LOW, а используется переменная ledEnabled. В зависимости от того, какое значение было вычислено false или true, светодиод будет включаться или выключаться.










Здравствуйте. А почему не рассмотрели режим INPUT_PULLUP для кнопки?