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