arduino2/libraries/Heltec_ESP32_Dev-Boards/examples/ESP32/ULP/HoldPinStatus/HoldPinStatus.ino
2021-02-10 18:05:49 +01:00

53 lines
1.4 KiB
C++

/*
* Hold GPIO status in deep sleep mode, use ESP32's ULP (Ultra Low Power) coprocessor
*
* HelTec AutoMation, Chengdu, China.
* 成都惠利特自动化科技有限公司
* www.heltec.cn
* support@heltec.cn
*
*this project also release in GitHub:
*https://github.com/HelTecAutomation/ESP32_LoRaWAN
*/
#include "soc/rtc_io_reg.h"
#include "driver/rtc_io.h"
#define uS_TO_S_FACTOR 1000000 /* Conversion factor for micro seconds to seconds */
#define TIME_TO_SLEEP 5 /* Time ESP32 will go to sleep (in seconds) */
RTC_DATA_ATTR int bootCount = 0;
void setup(){
rtc_gpio_hold_dis(GPIO_NUM_25);
pinMode(25,OUTPUT);
digitalWrite(25,LOW);//The on board LED will be OFF in wake up period
Serial.begin(115200);
delay(1000); //Take some time to open up the Serial Monitor
//Increment boot number and print it every reboot
++bootCount;
Serial.println("Boot number: " + String(bootCount));
delay(2);
esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
Serial.println("Setup ESP32 to sleep for every " + String(TIME_TO_SLEEP) +
" Seconds");
delay(10);
Serial.println("Going to sleep now");
delay(2);
rtc_gpio_init(GPIO_NUM_25);
pinMode(25,OUTPUT);
digitalWrite(25,HIGH);//The on board LED will be ON in deep sleep period
rtc_gpio_hold_en(GPIO_NUM_25);
esp_deep_sleep_start();
Serial.println("This will never be printed");
}
void loop(){
//This is not going to be called
}