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


// Плата: LGT8F32P
// Светодиод подключен к пину 9 (ШИМ), через резистор на GND
// Кнопка подключена между пином 2 и GND (внутренняя подтяжка INPUT_PULLUP)

#define LED_PIN 9
#define BUTTON_PIN 2

int pressCount = 0;           // счетчик нажатий кнопки
bool ledFading = false;       // флаг: идет ли сейчас нарастание яркости
unsigned long fadeStartTime;  // время начала нарастания яркости
int lastButtonState = HIGH;   // предыдущее состояние кнопки

void setup() {
  pinMode(LED_PIN, OUTPUT);
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  analogWrite(LED_PIN, 0);
}

void loop() {
  int buttonState = digitalRead(BUTTON_PIN);

  // Обнаружение нажатия (переход из HIGH в LOW)
  if (buttonState == LOW && lastButtonState == HIGH) {
    delay(50); // антидребезг
    pressCount++;

    // На 3-е нажатие запускаем плавное увеличение яркости
    if (pressCount == 3) {
      ledFading = true;
      fadeStartTime = millis();
    }

    // На 4-е нажатие сбрасываем все в исходное состояние
    if (pressCount == 4) {
      pressCount = 0;
      ledFading = false;
      analogWrite(LED_PIN, 0);
    }
  }

  lastButtonState = buttonState;

  // Плавное увеличение яркости светодиода за 3 секунды
  if (ledFading) {
    unsigned long elapsed = millis() - fadeStartTime;

    if (elapsed < 3000) {
      int brightness = map(elapsed, 0, 3000, 0, 255);
      analogWrite(LED_PIN, brightness);
    } else {
      analogWrite(LED_PIN, 255);
      ledFading = false;
    }
  }
}