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


// Управление яркостью светодиода кнопкой
// 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;
}