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


// Плата: LGT8F32P
// Светодиод: пин 9 (ШИМ)
// Кнопка: пин 2 - GND (внутренняя подтяжка)

const int LED_PIN = 9;
const int BUTTON_PIN = 2;

int pressCount = 0;
bool fading = false;
unsigned long fadeStart = 0;

int lastButtonState = HIGH;

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

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

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

    if (pressCount == 3) {
      fading = true;
      fadeStart = millis();
    }

    if (pressCount == 4) {
      pressCount = 0;
      fading = false;
      analogWrite(LED_PIN, 0);
    }
  }
  lastButtonState = buttonState;

  // Плавное увеличение яркости за 3 секунды
  if (fading) {
    unsigned long passed = millis() - fadeStart;
    if (passed >= 3000) {
      analogWrite(LED_PIN, 255);
      fading = false;
    } else {
      int brightness = map(passed, 0, 3000, 0, 255);
      analogWrite(LED_PIN, brightness);
    }
  }
}