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


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