// Управление яркостью светодиода кнопкой
// Arduino Nano
const int BUTTON_PIN = 2; // Кнопка
const int LED_PIN = 9; // Светодиод (PWM)
int pressCount = 0;
bool lastButtonState = HIGH;
void setup() {
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(LED_PIN, OUTPUT);
analogWrite(LED_PIN, 0);
}
void loop() {
bool buttonState = digitalRead(BUTTON_PIN);
// Обнаружено новое нажатие
if (lastButtonState == HIGH && buttonState == LOW) {
delay(30); // защита от дребезга
if (digitalRead(BUTTON_PIN) == LOW) {
pressCount++;
// После 4-го нажатия начинаем цикл заново
if (pressCount > 4) {
pressCount = 1;
}
// 1-е нажатие — минимальная яркость
if (pressCount == 1) {
analogWrite(LED_PIN, 20);
}
// 2-е нажатие — средняя яркость
else if (pressCount == 2) {
analogWrite(LED_PIN, 100);
}
// 3-е нажатие — плавное увеличение до максимума
else if (pressCount == 3) {
for (int brightness = 0; brightness <= 255; brightness++) {
analogWrite(LED_PIN, brightness);
delay(10);
}
}
// 4-е нажатие — выключение
else if (pressCount == 4) {
analogWrite(LED_PIN, 0);
}
// Ждём отпускания кнопки
while (digitalRead(BUTTON_PIN) == LOW) {
delay(10);
}
}
}
lastButtonState = buttonState;
}