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); // Затримка для уникнення зайвих переривань
}