Skopiuj poniższy kod do Arduino IDE i wgraj na ESP8266:
// Definicje pinów
const int ledPin = D5; // Pin, do którego podłączona jest dioda LED
const int buttonPin = D6; // Pin, do którego podłączony jest przycisk
// Zmienna przechowująca stan diody LED
volatile bool ledState = false;
// Funkcja obsługi przerwania
void IRAM_ATTR handleButtonPress() {
// Zmieniamy stan diody LED (włączamy/wyłączamy)
ledState = !ledState;
digitalWrite(ledPin, ledState ? HIGH : LOW);
}
void setup() {
// Konfiguracja pinu dla diody LED jako wyjście
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW); // Wyłącz diodę LED na początku
// Konfiguracja pinu dla przycisku jako wejście z wbudowanym rezystorem pull-up
pinMode(buttonPin, INPUT_PULLUP);
// Konfiguracja przerwania na zbocze opadające (naciśnięcie przycisku)
attachInterrupt(digitalPinToInterrupt(buttonPin), handleButtonPress, FALLING);
}
void loop() {
// Pętla główna jest pusta, gdyż sterowanie odbywa się w funkcji przerwania
}
W tym przykładzie:
handleButtonPress()
jest wywoływana za każdym razem, gdy przycisk zostanie naciśnięty.ledState
.IRAM_ATTR
umieszcza funkcję obsługi przerwania w szybkiej pamięci RAM, co jest wymagane dla ESP8266.