2021-5-31 09:27:40 [显示全部楼层]
3612浏览
查看: 3612|回复: 0

[求助] DFplayer Mini模块串口模式下条件语句中控制声音的播放与关闭

[复制链接]
想通过Arduino Nano,基本某种限定条件下,控制MP3的播放与停止。我选择的是利用串口模式的控制。在此之前,测试了DFRobotDFPlayerMini库和DFPlayer_Mini_Mp3_by_Makuna库。这两个库都可以正常的控制指定MP3的播放与停止。但当我偿试加入条件语句进行判别并决定MP3的播放与停止时,我发现扬声器并不能够正确播放或停止音乐。感觉条件语句一直在被执行。现将基于DFPlayer_Mini_Mp3_by_Makuna库的代码发上来,请指教。
  1. include <VarSpeedServo.h>
  2. #include <SoftwareSerial.h>
  3. #include <DFMiniMp3.h>
  4. class Mp3Notify
  5. {
  6. public:
  7.   static void PrintlnSourceAction(DfMp3_PlaySources source, const char* action)
  8.   {
  9.     if (source & DfMp3_PlaySources_Sd)
  10.     {
  11.         Serial.print("SD Card, ");
  12.     }
  13.     if (source & DfMp3_PlaySources_Usb)
  14.     {
  15.         Serial.print("USB Disk, ");
  16.     }
  17.     if (source & DfMp3_PlaySources_Flash)
  18.     {
  19.         Serial.print("Flash, ");
  20.     }
  21.     Serial.println(action);
  22.   }
  23.   static void OnError(uint16_t errorCode)
  24.   {
  25.     // see DfMp3_Error for code meaning
  26.     Serial.println();
  27.     Serial.print("Com Error ");
  28.     Serial.println(errorCode);
  29.   }
  30.   static void OnPlayFinished(DfMp3_PlaySources source, uint16_t track)
  31.   {
  32.     Serial.print("Play finished for #");
  33.     Serial.println(track);  
  34.   }
  35.   static void OnPlaySourceOnline(DfMp3_PlaySources source)
  36.   {
  37.     PrintlnSourceAction(source, "online");
  38.   }
  39.   static void OnPlaySourceInserted(DfMp3_PlaySources source)
  40.   {
  41.     PrintlnSourceAction(source, "inserted");
  42.   }
  43.   static void OnPlaySourceRemoved(DfMp3_PlaySources source)
  44.   {
  45.     PrintlnSourceAction(source, "removed");
  46.   }
  47. };
  48. VarSpeedServo barrier_1;  
  49. VarSpeedServo barrier_2;
  50. // I/O PINS                 
  51. #define POWER_SERVO 4 //舵机供电控制引脚4,HIGH舵机可用,LOW舵机关闭
  52. #define ALARM_1 2     
  53. #define ALARM_2 3
  54. #define SENSOR_LEFT A0
  55. #define SENSOR_RIGHT A1  
  56. int IRthreshold = 500;
  57. unsigned int sen1_Val,sen2_Val;
  58. bool trigger_s1 = false, trigger_s2 = false, latch_s1, latch_s2;
  59. bool crossing_blocked;
  60. static unsigned long millisPower;
  61. bool alarmSignals, tick_blink;  
  62. SoftwareSerial secondarySerial(7, 8); // RX, TX
  63. DFMiniMp3<SoftwareSerial, Mp3Notify> mp3(secondarySerial);
  64. void setup()
  65. {
  66. //MP3 初始化
  67.   Serial.begin(115200);
  68.   Serial.println("initializing...");
  69.   mp3.begin();
  70.   uint16_t volume = mp3.getVolume();
  71.   Serial.print("volume ");
  72.   Serial.println(volume);
  73.   mp3.setVolume(24);
  74.   
  75.   uint16_t count = mp3.getTotalTrackCount(DfMp3_PlaySource_Sd);
  76.   Serial.print("files ");
  77.   Serial.println(count);
  78.   
  79.   Serial.println("starting...");
  80. // Initialize Servos 舵机初始化   
  81.   pinMode(LED_BUILTIN, OUTPUT);   
  82.   pinMode(ALARM_1, OUTPUT);      
  83.   pinMode(ALARM_2, OUTPUT);      
  84.   pinMode(POWER_SERVO, OUTPUT);  
  85.   pinMode(SENSOR_LEFT,INPUT_PULLUP);
  86.   pinMode(SENSOR_RIGHT,INPUT_PULLUP);
  87.   barrier_1.attach(5);      //舵机控制引脚为5和6   
  88.   barrier_2.attach(6);
  89.   /*栏杆初始动作-抬杆         
  90.    舵机控制-“栏杆”动作说明:
  91.    barrier_X.write(XXX-运动角度,XX-(移动速度,值从低到高为0~255,程序设定速度为32),bool值:Ture等待动作完成,false不等动作完成)
  92.    SERVO 1 (HOUSE) UP: 165 | DOWN: 25   
  93. SERVO 2 (CORNER) UP: 170 | DOWN: 35   
  94. Speed 0 or 255: maximum, 1-254 from lower to higher speed   */
  95.   digitalWrite(POWER_SERVO, HIGH);         
  96.   digitalWrite(LED_BUILTIN, HIGH);     
  97.   delay(30);                          
  98.   barrier_1.write(180,32,false);      
  99.   delay(30);                          
  100.   barrier_2.write(180,32,false);      
  101.   millisPower = millis();  
  102. }
  103. void loop()
  104. {
  105.   mp3.loop();
  106.   delay(1);
  107.         if (analogRead(SENSOR_LEFT) <= IRthreshold) mp3.loopGlobalTrack(1);//这里,如果不加入条件语句,mp3.loopGlobalTrack(1)和mp3.stop()将被依次执行,而加入条件语句时,上述功能不能正常使用
  108.     else mp3.stop();
复制代码


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail