Advertisement
CHU2

ELEC 2 LAB 4.2

May 11th, 2025
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Arduino 1.58 KB | Source Code | 0 0
  1. #include <Arduino.h>
  2. #include "esp_sleep.h"
  3.  
  4. // Pin Definitions
  5. static const gpio_num_t button_pin = GPIO_NUM_33;   // pushbutton >> GPIO33 & GND
  6. static const gpio_num_t led_pin    = GPIO_NUM_2;    // on-board LED >> GPIO2
  7.  
  8. // Timer Interval
  9. static const uint64_t wake_timer_us = 5ULL * 1000000ULL;  // 5 seconds
  10.  
  11. void setup() {
  12.   Serial.begin(115200);
  13.   pinMode(led_pin, OUTPUT);
  14.   pinMode(button_pin, INPUT_PULLUP);  // internal pull-up
  15.  
  16.   // 1) Determine Wake Reason
  17.   esp_sleep_wakeup_cause_t wake_reason = esp_sleep_get_wakeup_cause();
  18.   if (wake_reason == ESP_SLEEP_WAKEUP_EXT0) {
  19.     Serial.println("woke by button");        // handle button first
  20.     digitalWrite(led_pin, HIGH);             // indicate button wake
  21.   }
  22.   else if (wake_reason == ESP_SLEEP_WAKEUP_TIMER) {
  23.     Serial.println("woke by timer");         // handle periodic task
  24.     digitalWrite(led_pin, LOW);              // indicate timer wake
  25.   }
  26.   else {
  27.     Serial.println("power-on reset");        // cold boot start
  28.     digitalWrite(led_pin, LOW);
  29.   }
  30.  
  31.   // 2) Main Task
  32.   Serial.println("running main task (test)");
  33.  
  34.   // 3) Configure Next Wake Sources
  35.   esp_sleep_enable_ext0_wakeup(button_pin, 0);     // wake on button LOW
  36.   esp_sleep_enable_timer_wakeup(wake_timer_us);    // wake after 5 s
  37.  
  38.   Serial.println("entering deep sleep");
  39.   Serial.flush();             // ensure all prints go out
  40.   delay(50);                  // allow USB-CDC re-enumeration
  41.   esp_deep_sleep_start();     // lowest-power standby
  42. }
  43.  
  44. void loop() {
  45.   // not used: execution never reaches here after deep sleep start
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement