Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Arduino.h>
- #include "esp_sleep.h"
- // Pin Definitions
- static const gpio_num_t button_pin = GPIO_NUM_33; // pushbutton >> GPIO33 & GND
- static const gpio_num_t led_pin = GPIO_NUM_2; // on-board LED >> GPIO2
- // Timer Interval
- static const uint64_t wake_timer_us = 5ULL * 1000000ULL; // 5 seconds
- void setup() {
- Serial.begin(115200);
- pinMode(led_pin, OUTPUT);
- pinMode(button_pin, INPUT_PULLUP); // internal pull-up
- // 1) Determine Wake Reason
- esp_sleep_wakeup_cause_t wake_reason = esp_sleep_get_wakeup_cause();
- if (wake_reason == ESP_SLEEP_WAKEUP_EXT0) {
- Serial.println("woke by button"); // handle button first
- digitalWrite(led_pin, HIGH); // indicate button wake
- }
- else if (wake_reason == ESP_SLEEP_WAKEUP_TIMER) {
- Serial.println("woke by timer"); // handle periodic task
- digitalWrite(led_pin, LOW); // indicate timer wake
- }
- else {
- Serial.println("power-on reset"); // cold boot start
- digitalWrite(led_pin, LOW);
- }
- // 2) Main Task
- Serial.println("running main task (test)");
- // 3) Configure Next Wake Sources
- esp_sleep_enable_ext0_wakeup(button_pin, 0); // wake on button LOW
- esp_sleep_enable_timer_wakeup(wake_timer_us); // wake after 5 s
- Serial.println("entering deep sleep");
- Serial.flush(); // ensure all prints go out
- delay(50); // allow USB-CDC re-enumeration
- esp_deep_sleep_start(); // lowest-power standby
- }
- void loop() {
- // not used: execution never reaches here after deep sleep start
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement