#define BUTTON_PIN 3
#define LED_PIN 5
int buttonState = 0;
int lastButtonState = 0;
int count = 0;
int i = 0;
void setup() {
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(LED_PIN, OUTPUT);
Serial.begin(9600);
}
void loop() {
buttonState = digitalRead(BUTTON_PIN);
// Ловим нажатие без использования символа & (через вложенные if)
if (buttonState == 0) {
if (lastButtonState == 1) {
delay(50); // антидребезг
count = count + 1;
// Если это ровно 3-е нажатие
if (count == 3) {
i = 0;
// Набираем яркость пока кнопка удерживается (до 3 секунд / 300 шагов по 10 мс)
while (i < 300) {
if (digitalRead(BUTTON_PIN) == 0) {
analogWrite(LED_PIN, map(i, 0, 300, 0, 255));
delay(10);
i = i + 1;
} else {
break;
}
}
// Когда отпустили кнопку или вышло время — выключаем и сбрасываем
analogWrite(LED_PIN, 0);
count = 0;
}
}
}
// Сброс счетчика, если нажали больше 3 раз
if (count > 3) {
count = 0;
}
lastButtonState = buttonState;
}