// Плата: 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;
}
}
}