|
9| 0
|
[ESP8266/ESP32] 求助dfplayermini模块只有通电时有闪一下红灯不放音乐 |
|
本帖最后由 huafff 于 2026-4-2 22:38 编辑 用的是esp32-cam,dfplayermini模块只有刚通电时亮了下红灯,后面都没亮过,喇叭有滋滋声 这是代码 #ifndef MP3_PLAYER_H #define MP3_PLAYER_H #include "esp32cam_config.h" #include <HardwareSerial.h> #include <DFRobotDFPlayerMini.h> // 串口和对象定义 HardwareSerial Mp3Serial(2); DFRobotDFPlayerMini myDFPlayer; // 状态变量 bool mp3Initialized = false; unsigned long lastMP3Heartbeat = 0; int mp3FailCount = 0; // 初始化MP3 bool mp3Init() { Serial.println("======== MP3初始化 ========"); Serial.println("引脚: RX=12, TX=16"); Mp3Serial.end(); delay(100); Mp3Serial.begin(9600, SERIAL_8N1, MP3_RX, MP3_TX); delay(300); Serial.println("尝试连接DFPlayer..."); if (myDFPlayer.begin(Mp3Serial, true, true)) { delay(200); myDFPlayer.volume(25); myDFPlayer.stop(); mp3Initialized = true; Serial.println("✓ MP3初始化成功!"); Serial.println("音量已设为: 25"); return true; } Serial.println("✗ MP3初始化失败"); Serial.println("请检查:接线/电源/SD卡"); mp3Initialized = false; return false; } // 播放音频 void playAudio(uint8_t num) { if (!mp3Initialized) { Serial.println("MP3未初始化,无法播放"); return; } Serial.print("播放音频 #"); Serial.println(num); myDFPlayer.playMp3Folder(num); } // 停止播放 void stopAudio() { if (mp3Initialized) { Serial.println("停止播放"); myDFPlayer.stop(); } } // 设置音量 (0-30) void setMP3Volume(int volume) { if (mp3Initialized) { volume = constrain(volume, 0, 30); myDFPlayer.volume(volume); Serial.print("音量设为: "); Serial.println(volume); } } // 打印状态 void printMP3Status() { Serial.println("=== MP3状态 ==="); Serial.print("初始化: "); Serial.println(mp3Initialized ? "是" : "否"); if (mp3Initialized) { Serial.print("音量: "); Serial.println(myDFPlayer.readVolume()); } } // 健康检查 void mp3HealthMonitor() { static unsigned long lastCheck = 0; if (!mp3Initialized) { static unsigned long lastTry = 0; if (millis() - lastTry > 10000) { lastTry = millis(); mp3Init(); } return; } if (millis() - lastCheck > 30000) { lastCheck = millis(); int vol = myDFPlayer.readVolume(); delay(20); if (vol == 0 && myDFPlayer.available()) { mp3FailCount++; if (mp3FailCount >= 3) { Serial.println("MP3心跳失败,尝试重连"); mp3Initialized = false; } } else { mp3FailCount = 0; } } } // 兼容性函数 void mp3Heartbeat() { mp3HealthMonitor(); } #endif |
沪公网安备31011502402448© 2013-2026 Comsenz Inc. Powered by Discuz! X3.4 Licensed