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


const int buttonPin = 2;
const int ledPin = 9;

int brightness = 0;
int pressCount = 0;

bool lastButtonState = HIGH;

void setup() {
  pinMode(buttonPin, INPUT_PULLUP);
  pinMode(ledPin, OUTPUT);

  analogWrite(ledPin, 0);
}

void loop() {
  bool buttonState = digitalRead(buttonPin);

  // Обнаружено нажатие
  if (lastButtonState == HIGH && buttonState == LOW) {

    pressCount++;

    // Первые 4 нажатия — увеличение яркости
    if (pressCount <= 4) {
      brightness = pressCount * 255 / 4;
    }

    // Следующие 4 нажатия — уменьшение яркости
    else if (pressCount <= 8) {
      brightness = (8 - pressCount) * 255 / 4;
    }

    // После 8 нажатий начинаем заново
    else {
      pressCount = 1;
      brightness = 255 / 4;
    }

    analogWrite(ledPin, brightness);

    // Задержка для устранения дребезга кнопки
    delay(250);
  }

  lastButtonState = buttonState;
}