Кнопка-выключатель (с фиксацией)

Светодиод переключается по НАЖАТИЮ, а не пока кнопку держат: ловим фронт.

Средний уровень Arduino Uno C++
Схема подключения: Кнопка-выключатель (с фиксацией)
Схема в симуляторе. Нажмите «Открыть в симуляторе», чтобы запустить её и поменять.

Что понадобится

Как подключить

ОткудаКуда
Arduino UnoD2→Кнопка1.l
Кнопка2.l→Arduino UnoGND
Arduino UnoD8→Резистор1
Резистор2→СветодиодA
СветодиодC→Arduino UnoGND

Скетч

// Нажали — включилось, ещё раз нажали — выключилось.
// Ловим МОМЕНТ нажатия (был HIGH, стал LOW) и ждём 30 мс от дребезга.
const int BTN = 2;
const int LED = 8;

bool lastLevel = HIGH;
bool lampOn = false;
unsigned long lastChange = 0;

void setup() {
  pinMode(BTN, INPUT_PULLUP);
  pinMode(LED, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  bool level = digitalRead(BTN);

  if (level != lastLevel && millis() - lastChange > 30) {
    lastChange = millis();
    lastLevel = level;
    if (level == LOW) {          // именно нажатие, а не отпускание
      lampOn = !lampOn;
      digitalWrite(LED, lampOn ? HIGH : LOW);
      Serial.println(lampOn ? "включено" : "выключено");
    }
  }
}

Коротко о детали: Кнопка

Тактовая кнопка замыкает цепь, пока её держат нажатой. Выводов четыре, но попарно они соединены внутри корпуса, так что независимых контактов всего два. Чтобы вход не ловил наводки, используют подтяжку — INPUT_PULLUP или резистор на питание.

Распиновка и все примеры →

Ещё примеры с деталью «Кнопка»

Попробуйте сами

Симулятор работает прямо в браузере: схему можно менять, код — править, а результат видно сразу. Бесплатно, без установки и регистрации.

Открыть «Кнопка-выключатель (с фиксацией)» в симуляторе