我对使用Arduino和任何类型的电路都非常陌生。
我试图通过使用命令esp_sleep_enable_ext0_wakeup
void setup(){
int MY_PIN = 13;
pinMode(MY_PIN, INPUT_PULLUP);
int reading = digitalRead(MY_PIN);
if(reading == 1) {
esp_sleep_enable_ext0_wakeup(GPIO_NUM_13,0);
}
else {
esp_sleep_enable_ext0_wakeup(GPIO_NUM_13,1);
}
// I want the board to wake up every time the state of the switch changes.
esp_deep_sleep_start();
}
我为此遇到麻烦。当我期望唤醒不会发生。我认为这与使用外部上拉电阻有关。我没有连接。
有没有办法为此目的使用内部上拉电阻?
任何人都可以解释其总体工作原理,我将不胜感激。
@note此功能不会修改引脚配置。即将进入睡眠模式之前,已在esp_sleep_start中配置了该引脚。
也许我需要使用esp_sleep_pd_config
正确配置它。这可能是上拉电阻不工作的原因吗?
答案 0 :(得分:1)
对于每个正在为此奋斗的人,最终的解决方案或多或少是先前解决方案的组合。
首先,您需要包括库:
#include "driver/rtc_io.h"
现在,您需要启用上拉/下拉功能,同时禁用相反的上拉/下拉功能。像这样:
rtc_gpio_pullup_en(GPIO_NUM_13);
rtc_gpio_pulldown_dis(GPIO_NUM_13);
esp_sleep_enable_ext0_wakeup(GPIO_NUM_13,0);
就是这样。您无需启用rtc_gpio_hold_en
。
答案 1 :(得分:0)
我相信您需要使用
来使睡眠期间保持上拉 rtc_gpio_pullup_en(GPIO_NUM_13);
在调用esp_sleep_enable_ext0_wakeup()之前。为此,您还需要
#include "driver/rtc_io.h"
答案 2 :(得分:0)
这项工作最终为您完成了吗?我还试图在ESP32上触发内部下拉或上拉以从深度睡眠中唤醒,但它不起作用。 与外部上拉/下拉,正常工作。 鲍勃
答案 3 :(得分:0)
Appart要通过rtc_gpio_pullup_en()
或rtc_gpio_pulldown_en()
启用上拉或下拉,必须通过调用rtc_gpio_hold_en()
来启用rtc保持功能。