#define BTN 3
#define LED 5
int count = 0;
int i = 0;
int BTNState = 0;
int lastBTNState = 0;
void setup() {
pinMode(BTN, INPUT);
pinMode(LED, OUTPUT);
}
void loop() {
BTNState = digitalRead(BTN);
// Ловим момент нажатия (переход сигнала)
if (BTNState == HIGH) {
if (lastBTNState == LOW) {
delay(50); // антидребезг по уроку
count = count + 1;
// На 4-е нажатие сбрасываем и тушим
if (count > 3) {
count = 0;
analogWrite(LED, 0);
}
// На 3-е нажатие плавно набираем яркость при удержании
if (count == 3) {
for (i = 0; i <= 255; i++) {
if (digitalRead(BTN) == HIGH) {
analogWrite(LED, i);
delay(11); // плавный набор примерно за 3 секунды
}
else {
i = 256; // завершаем цикл, если кнопку отпустили раньше
}
}
}
}
}
lastBTNState = BTNState;
}