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


#define LED_PIN 3       // Пин со светодиодом (обязательно ШИМ: 3, 5, 6, 9, 10 или 11)
#define BUTTON_PIN 2    // Пин для кнопки

int clickCount = 0;              // Счетчик нажатий
bool lastButtonState = HIGH;     // Предыдущее состояние кнопки

// Время нарастания яркости (в миллисекундах)
// Например: 2000 мс = 2 секунды, 3000 мс = 3 секунды
const int fadeDuration = 2000;

void setup() {
  pinMode(LED_PIN, OUTPUT);
  // Включаем внутренний подтягивающий резистор (при ненажатой кнопке - HIGH, при нажатии - LOW)
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  
  // Изначально светодиод выключен
  analogWrite(LED_PIN, 0);
}

void loop() {
  // Считываем текущее состояние кнопки
  bool currentButtonState = digitalRead(BUTTON_PIN);

  // Ловим момент именно НАЖАТИЯ (переход из HIGH в LOW)
  if (lastButtonState == HIGH && currentButtonState == LOW) {
    clickCount++;
    delay(50); // Небольшая задержка для устранения дребезга контактов
  }
  
  lastButtonState = currentButtonState;

  // Если кнопку нажали ровно 3 раза
  if (clickCount == 3) {
    // Рассчитываем паузу между шагами нарастания яркости (всего 256 градаций от 0 до 255)
    int stepDelay = fadeDuration / 255; 

    // Плавное увеличение яркости от 0 до 255
    for (int brightness = 0; brightness <= 255; brightness++) {
      analogWrite(LED_PIN, brightness);
      delay(stepDelay);
    }

    // Сбрасываем счетчик, чтобы при следующих 3 нажатиях всё повторилось
    clickCount = 0;
  }
}