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


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