// ESP32 - Interrupcao externa com 2 LEDs e Serial
const int ledVerde = 2;
const int ledVermelho = 4;
const int botao = 18;
volatile bool interrupcao = false;
// Funcao chamada quando o botao e pressionado
void IRAM_ATTR botaoPressionado() {
interrupcao = true;
}
void setup() {
Serial.begin(115200);
pinMode(ledVerde, OUTPUT);
pinMode(ledVermelho, OUTPUT);
pinMode(botao, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(botao), botaoPressionado, FALLING);
Serial.println("Sistema iniciado.");
}
void loop() {
// Funcionamento normal
digitalWrite(ledVerde, HIGH);
delay(500);
digitalWrite(ledVerde, LOW);
delay(500);
// Se houve interrupcao
if (interrupcao == true) {
Serial.println("Interrupcao detectada!");
digitalWrite(ledVermelho, HIGH);
delay(1000);
digitalWrite(ledVermelho, LOW);
interrupcao = false;
}
}