Загрузка данных


#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;
}