const int LED_VERDE = 47;
const int LED_ROJO = 38;
const int PULSADOR = 10;
volatile int tiempoUltimaInactividad=false;
const unsigned int TIEMPO_INACTIVIDAD = 10000; //10 segundos
bool enHibernación = false;
void ARDUINO_ISR_ATTR handleButtonPress() {
if (enHibernacion) {
enHibernacion = false;
digitalWrite(LED_ROJO, LOW);
digitalWrite(LED_VERDE, HIGH);
Serial.begin(115200);
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode (LED_VERDE, OUTPUT);
pinMode (LED_ROJO, OUTPUT);
pinMode (PULSADOR, INPUT_PULLUP);
attachInterrupt(PULSADOR, handleButtonPress, FALLING);
digitalWrite(LED_VERDE, HIGH);
digitalWrite(LED_ROJO, LOW);
tiempoUltimaActividad = millis ();
}
void loop() {
// put your main code here, to run repeatedly:
if (!enHibernacion){
if(Serial.available()){
tiempoUltimaActividad= millis ();
String entrada = Serial.readStringUntil('\n');
Serial.println("Recibido: " + entrada);
}
if (millis()- tiempoUltimaActividad>TIEMPO_INACTIVIDAD){
enHibernacion = true;
Serial.end();
digitalWrite(LED_VERDE, LOW);
digitalWrite (LED_ROJO, HIGH);
if (digitalRead(PULSADOR, HIGH)){
enHibernacion=false;
}
}
}
delay(100); // this speeds up the simulation
}
Loading
esp32-s3-devkitc-1
esp32-s3-devkitc-1