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