// ESP32 - Deep Sleep com indicacao visual de dormir e acordar
// LED verde = sistema ativo
// LED vermelho piscando = indo dormir
// LED vermelho piscando rapido = acordou
#include <Arduino.h>
#include "esp_sleep.h"
const int ledVerde = 2;
const int ledVermelho = 4;
// Variavel que permanece armazenada durante deep sleep
RTC_DATA_ATTR int contador = 0;
void setup() {
Serial.begin(115200);
pinMode(ledVerde, OUTPUT);
pinMode(ledVermelho, OUTPUT);
contador++;
Serial.println("\nESP32 iniciado");
// Verifica se acordou do deep sleep
if (contador > 1) {
Serial.println("ESP32 acordou do deep sleep");
// Mensagem visual de acordar
for(int i = 0; i < 3; i++) {
digitalWrite(ledVermelho, HIGH);
delay(100);
digitalWrite(ledVermelho, LOW);
delay(100);
}
}
Serial.print("Numero de inicializacoes: ");
Serial.println(contador);
// Sistema ativo
digitalWrite(ledVerde, HIGH);
Serial.println("Sistema ativo por 5 segundos");
delay(5000);
// Indica que vai dormir
Serial.println("Indo dormir...");
digitalWrite(ledVerde, LOW);
// Mensagem visual de dormir
for(int i = 0; i < 5; i++) {
digitalWrite(ledVermelho, HIGH);
delay(200);
digitalWrite(ledVermelho, LOW);
delay(200);
}
Serial.println("Entrando em deep sleep por 10 segundos");
// Configura wakeup por tempo
esp_sleep_enable_timer_wakeup(10000000);
// Entra em deep sleep
esp_deep_sleep_start();
}
void loop() {
}