79273082

Date: 2024-12-11 20:25:19
Score: 0.5
Natty:
Report link

The above logic was good, something was wrong with my prototype. Here is some drier code that I can confirm works on ESP32C6 that also implements a suggestion by @romkey. This is running with a 10K external resistor and not esp_sleep_pd_config().

#include <Arduino.h>
#include <esp_sleep.h>

uint64_t gpio_pin_mask = (1ULL << 4);
RTC_DATA_ATTR unsigned btn_state;

void setup() {
  Serial.begin(115200);
  pinMode(4, INPUT_PULLUP);
}

void loop() {
  btn_state = digitalRead(4);
  Serial.println("btn state " + String(btn_state));
  if (btn_state == 0) {
    esp_sleep_enable_ext1_wakeup_io(gpio_pin_mask, ESP_EXT1_WAKEUP_ANY_HIGH);
  } else {
    esp_sleep_enable_ext1_wakeup_io(gpio_pin_mask, ESP_EXT1_WAKEUP_ANY_LOW);
  }
  Serial.println("Entering sleep...");
  delay(1500);
  esp_deep_sleep_start();
}
Reasons:
  • Long answer (-0.5):
  • Has code block (-0.5):
  • User mentioned (1): @romkey
  • Self-answer (0.5):
Posted by: DaveL17