#include <Arduino.h>
#define LED_PIN 39
#define BUTTON_PIN 18
// Количество нажатий для активации
const int PRESSES_TO_ACTIVATE = 5;
bool ledActive = false; // флаг, горит ли сейчас светодиод
unsigned long ledStartTime = 0; // время начала свечения
int pressCount = 0; // счётчик нажатий
int lastButtonState = LOW; // предыдущее состояние кнопки
unsigned long lastDebounceTime = 0;
const unsigned long debounceDelay = 50; // мс
void setup() {
pinMode(LED_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT); // кнопка подтянута к VCC (HIGH при нажатии)
digitalWrite(LED_PIN, LOW);
}
void loop() {
// 1. Обработка свечения светодиода (неблокирующая)
if (ledActive) {
if (millis() - ledStartTime >= 1000) {
digitalWrite(LED_PIN, LOW); // выключить после 1 секунды
ledActive = false;
}
}
// 2. Чтение кнопки с антидребезгом
int reading = digitalRead(BUTTON_PIN);
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
// если состояние стабильно и изменилось с LOW на HIGH (нажатие)
if (reading == HIGH && lastButtonState == LOW) {
pressCount++;
// если нажато нужное количество раз
if (pressCount >= PRESSES_TO_ACTIVATE) {
// включаем светодиод и сбрасываем счётчик
digitalWrite(LED_PIN, HIGH);
ledActive = true;
ledStartTime = millis();
pressCount = 0;
}
}
}
lastButtonState = reading;
}