const int ledPin1 = 16;  // Замінили GPIO 18 на GPIO 16 для LED1
const int ledPin2 = 19;  // GPIO 19 для LED2
const int ledPin3 = 21;  // GPIO 21 для LED3

const int buttonPin = 18;  // GPIO 18 для кнопки

volatile int pressCount = 0;  // Змінюється під час переривання

void IRAM_ATTR handleButtonPress() {
  pressCount++;
  if (pressCount > 4) {
    pressCount = 1;
  }
}

void setup() {
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);

  pinMode(buttonPin, INPUT_PULLUP);  // Використання внутрішнього підтягуючого резистора

  attachInterrupt(digitalPinToInterrupt(buttonPin), handleButtonPress, FALLING);
}

void loop() {
  switch (pressCount) {
    case 1:
      digitalWrite(ledPin1, HIGH);
      digitalWrite(ledPin2, LOW);
      digitalWrite(ledPin3, LOW);
      break;
    case 2:
      digitalWrite(ledPin1, HIGH);
      digitalWrite(ledPin2, HIGH);
      digitalWrite(ledPin3, LOW);
      break;
    case 3:
      digitalWrite(ledPin1, HIGH);
      digitalWrite(ledPin2, HIGH);
      digitalWrite(ledPin3, HIGH);
      break;
    case 4:
      digitalWrite(ledPin1, LOW);
      digitalWrite(ledPin2, LOW);
      digitalWrite(ledPin3, LOW);
      break;
  }

  delay(50);  // Затримка для уникнення зайвих переривань
}