// Даём пинам понятные имена constexpr int LED_PIN = 2; constexpr int BUTTON_PIN = 4; // Создаём переменную для хранения состояние светодиода // В начале программы светодиод должен быть потушен, // поэтому присваиваем переменной значение LOW bool ledState = LOW; // Создаём переменную для хранения последнего состояние кнопки // В начале программы кнопка должна быть отпущена, // поэтому присваиваем переменной значение LOW bool lastButtonState = LOW; void setup() { // Настраиваем пин со светодиодом в режим выхода pinMode(LED_PIN, OUTPUT); // Настраиваем пин с кнопкой в режим входа с подтяжкой к питанию pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // Создаём переменную для хранения состояние кнопки // Считываем инвертированное состояние с кнопки bool buttonState = !digitalRead(BUTTON_PIN); // Проверяем два условия // Условие 1: нажата ли кнопка сейчас // Условие 2: была ли кнопка отжата до фиксирования нового нажатия if (buttonState == HIGH && lastButtonState == LOW) { // Если оба условия прошли, значит это клик // Меняем состояние переменной для светодиода ledState = !ledState; // Применяем новое значение переменной для управления светодиодом digitalWrite(LED_PIN, ledState); } // Запишем в переменную новое значение состояния кнопки lastButtonState = buttonState; }