乐鑫技术交流
直播中

李泳瑜

7年用户 1120经验值
私信 关注
[问答]

从深度睡眠唤醒时DacAudio ESP32不工作的原因?

您好
,我有一个最多连接 1 个按钮的 ESP32 和一个 Adafruit PAM8301 音频放大器。我已经测试了没有任何深度睡眠代码的 .wav 文件的播放,一切正常。我现在已经调整了我的代码,使 ESP32 进入深度睡眠并在按下按钮时唤醒。醒来后,音频应该播放,然后它应该回到深度睡眠状态,直到按下下一个按钮。每次醒来都很好,然后又睡着了,但音频不播放。有任何想法吗?谢谢。
这是我的代码:

#include "potatoe.h"
#include "XT_DAC_Audio.h
"
RTC_DATA_ATTR XT_DAC_Audio_Class DacAudio(25,0);
void print_wakeup_reason(){
  esp_sleep_wakeup_cause_t wakeup_reason;
  wakeup_reason = esp_sleep_get_wakeup_cause();
  switch(wakeup_reason)
  {
    case ESP_SLEEP_WAKEUP_EXT0 : Serial.println("Wakeup caused by external signal using RTC_IO"); 播放音频();休息;
    case ESP_SLEEP_WAKEUP_EXT1 : Serial.println("Wakeup caused by external signal using RTC_CNTL"); 休息;
    case ESP_SLEEP_WAKEUP_tiMER : Serial.println("定时器引起的唤醒"); 休息;
    case ESP_SLEEP_WAKEUP_TOUCHPAD : Serial.println("触摸板引起的唤醒"); 休息;
    case ESP_SLEEP_WAKEUP_ULP : Serial.println("由 ULP 程序引起的唤醒"); 休息;
    默认值:Serial.printf(“唤醒不是由深度睡眠引起的:%dn”,wakeup_reason);休息;


void setup() {
  Serial.begin(115200);
  延迟(1000);
  Serial.println("启动...");
  //打印ESP32的唤醒原因
  print_wakeup_reason();
  esp_sleep_enable_ext0_wakeup(GPIO_NUM_33, 1);
  esp_deep_sleep_start();
}
void loop() {
  // 此处无事可做
}
void play_audio() {
  DacAudio.FillBuffer();
  DacAudio.Play(&土豆);
  Serial.println("播放音频");
  延迟(10000);
}

                             

更多回帖

×
20
完善资料,
赚取积分