#define BTN 3
#define LED 5
int count = 0;
int i = 0;
int BTNState = 0;
void setup() {
pinMode(BTN, INPUT);
pinMode(LED, OUTPUT);
}
void loop() {
BTNState = digitalRead(BTN);
// Ловим нажатие кнопки
if (BTNState == HIGH) {
delay(50); // антидребезг
count = count + 1;
// Если это ровно 3-е нажатие
if (count == 3) {
// Используем цикл for вместо while (без break и без &)
for (i = 0; i <= 255; i++) {
// Проверяем, удерживается ли кнопка
if (digitalRead(BTN) == HIGH) {
analogWrite(LED, i);
delay(11); // задержка для плавности на 3 секунды (255 шагов * 11 мс)
}
else {
// Если кнопку отпустили раньше — принудительно завершаем цикл
i = 256;
}
}
// После окончания удержания выключаем светодиод и сбрасываем счетчик
analogWrite(LED, 0);
count = 0;
}
}
// Сброс счетчика, если нажали больше 3 раз
if (count > 3) {
count = 0;
}
}