Advertisement
NittyGritty

FullFunction_Modified.ino

Nov 10th, 2021
674
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.07 KB | None | 0 0
  1. /***************************************************
  2.  Durch Wolfgang Ewald modifizierte Version des FullFunction.ino Beispielsketches der DFRobotDFPlayerMini Bibliothek:
  3.  
  4.   https://wolles-elektronikkiste.de/dfplayer-mini-ansteuerung-mit-dem-arduino
  5.  
  6.  DFPlayer - A Mini MP3 Player For Arduino
  7.  <https://www.dfrobot.com/product-1121.html>
  8.  
  9.  ***************************************************
  10.  This example shows the all the function of library for DFPlayer.
  11.  
  12.  Created 2016-12-07
  13.  By [Angelo qiao](Angelo.qiao@dfrobot.com)
  14.  
  15.  GNU Lesser General Public License.
  16.  See <http://www.gnu.org/licenses/> for details.
  17.  All above must be included in any redistribution
  18.  ****************************************************/
  19.  
  20. /***********Notice and Trouble shooting***************
  21.  1.Connection and Diagram can be found here
  22. <https://www.dfrobot.com/wiki/index.php/DFPlayer_Mini_SKU:DFR0299#Connection_Diagram>
  23.  2.This code is tested on Arduino Uno, Leonardo, Mega boards.
  24.  ****************************************************/
  25.  
  26. #include "Arduino.h"
  27. #include <SoftwareSerial.h>
  28. #include <DFRobotDFPlayerMini.h>
  29.  
  30. SoftwareSerial mySoftwareSerial(D7,D6); // RX, TX
  31. DFRobotDFPlayerMini myDFPlayer;
  32. void printDetail(uint8_t type, int value);
  33.  
  34. void setup()
  35. {
  36.   const char compile_date[] = __DATE__ " " __TIME__ " " __FILE__;
  37.   mySoftwareSerial.begin(9600);
  38.   Serial.begin(115200);
  39.   Serial.println();
  40.   Serial.println(compile_date);
  41.  
  42.   Serial.println();
  43.   Serial.println(F("DFRobot DFPlayer Mini Demo"));
  44.   Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
  45.  
  46.  
  47.   if (!myDFPlayer.begin(mySoftwareSerial, false)) {  //Use softwareSerial to communicate with mp3.
  48.     Serial.println(F("Unable to begin:"));
  49.     Serial.println(F("1.Please recheck the connection!"));
  50.     Serial.println(F("2.Please insert the SD card!"));
  51.     while(true) delay(0);
  52.   }
  53.   Serial.println(F("DFPlayer Mini online."));
  54.   printHelp();
  55.  
  56.   myDFPlayer.setTimeOut(500); //Set serial communictaion time out 500ms
  57.  
  58.   //----Set volume----
  59.   myDFPlayer.volume(25);  //Set volume value (0~30).
  60.  // myDFPlayer.volumeUp(); //Volume Up
  61.  // myDFPlayer.volumeDown(); //Volume Down
  62.  
  63.   //----Set different EQ----
  64.   myDFPlayer.EQ(DFPLAYER_EQ_NORMAL);
  65. //  myDFPlayer.EQ(DFPLAYER_EQ_POP);
  66. //  myDFPlayer.EQ(DFPLAYER_EQ_ROCK);
  67. //  myDFPlayer.EQ(DFPLAYER_EQ_JAZZ);
  68. //  myDFPlayer.EQ(DFPLAYER_EQ_CLASSIC);
  69. //  myDFPlayer.EQ(DFPLAYER_EQ_BASS);
  70.  
  71.   //----Set device we use SD as default----
  72. //  myDFPlayer.outputDevice(DFPLAYER_DEVICE_U_DISK);
  73.   myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD);
  74. //  myDFPlayer.outputDevice(DFPLAYER_DEVICE_AUX);
  75. //  myDFPlayer.outputDevice(DFPLAYER_DEVICE_SLEEP);
  76. //  myDFPlayer.outputDevice(DFPLAYER_DEVICE_FLASH);
  77.  
  78.   //----Mp3 control----
  79. //  myDFPlayer.sleep();     //sleep
  80.   myDFPlayer.reset();     //Reset the module
  81.   myDFPlayer.enableDAC();  //Enable On-chip DAC
  82. //  myDFPlayer.disableDAC();  //Disable On-chip DAC
  83.   myDFPlayer.outputSetting(true, 15); //output setting, enable the output and set the gain to 15
  84.  
  85.  
  86. }
  87.  
  88. void loop(){
  89.   if(Serial.available()){
  90.     readCommand();
  91.   }
  92.  
  93.   if (myDFPlayer.available()) {
  94.     printDetail(myDFPlayer.readType(), myDFPlayer.read()); //Print the detail message from DFPlayer to handle different errors and states.
  95.   }
  96. }
  97.  
  98. void readCommand(){
  99.   char cmd = ' ';
  100.   int value1, value2 = 0;
  101.   cmd = Serial.read();
  102.   value1 = Serial.parseInt();
  103.   value2 = Serial.parseInt();
  104.  
  105.   switch(cmd){
  106.     case 'h':
  107.       printHelp();
  108.       break;
  109.      
  110.     case '>':
  111.       myDFPlayer.next();
  112.       break;
  113.      
  114.     case '<':
  115.       myDFPlayer.previous();
  116.       break;
  117.      
  118.     case 'p':
  119.       if(value2 == 0) myDFPlayer.play(value1);
  120.       else if(value1 != 0) myDFPlayer.playFolder(value1, value2);
  121.       break;
  122.  
  123.     case 'P':
  124.       if(value2 == 0) myDFPlayer.playMp3Folder(value1);
  125.       else if(value1 != 0)myDFPlayer.playLargeFolder(value1, value2);
  126.       break;
  127.    
  128.     case '+':
  129.       myDFPlayer.volumeUp();
  130.       break;
  131.      
  132.     case '-':
  133.       myDFPlayer.volumeDown();
  134.       break;
  135.      
  136.     case 'v':
  137.       myDFPlayer.volume(value1);
  138.       break;
  139.      
  140.     case 'b':
  141.       myDFPlayer.pause();
  142.       break;
  143.  
  144.     case 's':
  145.       myDFPlayer.start();
  146.       break;
  147.          
  148.     case 'z':
  149.       myDFPlayer.sleep();
  150.       break;
  151.      
  152.     case 'L':
  153.       if(value1 == 0) myDFPlayer.enableLoopAll();
  154.       else myDFPlayer.loopFolder(value1);
  155.       break;
  156.    
  157.     case 'l':
  158.       if(value1 == 0) myDFPlayer.disableLoopAll();
  159.       else myDFPlayer.loop(value1);
  160.       break;
  161.    
  162.     case 'A':
  163.       myDFPlayer.advertise(value1);
  164.       break;
  165.    
  166.     case 'a':
  167.       myDFPlayer.stopAdvertise();
  168.       break;
  169.    
  170.     case 'q':
  171.       if(value1 == 1) Serial.println(myDFPlayer.readState());
  172.       else if(value1 == 2) Serial.println(myDFPlayer.readVolume());
  173.       else if(value1 == 3) Serial.println(myDFPlayer.readEQ());
  174.       else if(value1 == 4) Serial.println(myDFPlayer.readFileCounts());
  175.       else if(value1 == 5) Serial.println(myDFPlayer.readFolderCounts());
  176.       else if(value1 == 6) Serial.println(myDFPlayer.readCurrentFileNumber());
  177.       break;
  178.     default:
  179.       Serial.println("Ungültiges Kommando");
  180.       break;
  181.   }
  182.  
  183. }
  184.  
  185. void printHelp(){
  186.   Serial.println("DFPlayer Commands:");
  187.   Serial.println(" h - help");
  188.   Serial.println(" > - next ");
  189.   Serial.println(" < - previous");
  190.   Serial.println(" p3 - play");
  191.   Serial.println(" p3,5 - play folder 3, file 5");
  192.   Serial.println(" P3,5 - play large folder 3, file 5");
  193.   Serial.println(" P3 - play file 3 in MP3 folder");
  194.   Serial.println(" + - volume up");
  195.   Serial.println(" - - volume down");
  196.   Serial.println(" v10 - set volume to 10");
  197.   Serial.println(" b - Pause");
  198.   Serial.println(" s - start ");
  199.   Serial.println(" z - sleep ");
  200.   Serial.println(" L - enable loop all");
  201.   Serial.println(" l - disable loop all");
  202.   Serial.println(" L3 - loop folder 3");
  203.   Serial.println(" l3 - loop file 3");
  204.   Serial.println(" A3 - advertise file 3");
  205.   Serial.println(" a - stop advertise ");
  206.   Serial.println(" qx - query No. x");
  207.   Serial.println("     x = 1 - read state");
  208.   Serial.println("     x = 2 - read volume");
  209.   Serial.println("     x = 3 - read equalizer");
  210.   Serial.println("     x = 4 - read file counts");
  211.   Serial.println("     x = 5 - read current file number");
  212.   Serial.println("     x = 6 - read file counts in folder");
  213.   Serial.println("     x = 7 - read folder counts");
  214. }
  215.  
  216. void printDetail(uint8_t type, int value){
  217.   switch (type) {
  218.     case TimeOut:
  219.       Serial.println(F("Time Out!"));
  220.       break;
  221.     case WrongStack:
  222.       Serial.println(F("Stack Wrong!"));
  223.       break;
  224.     case DFPlayerCardInserted:
  225.       Serial.println(F("Card Inserted!"));
  226.       break;
  227.     case DFPlayerCardRemoved:
  228.       Serial.println(F("Card Removed!"));
  229.       break;
  230.     case DFPlayerCardOnline:
  231.       Serial.println(F("Card Online!"));
  232.       break;
  233.     case DFPlayerUSBInserted:
  234.       Serial.println("USB Inserted!");
  235.       break;
  236.     case DFPlayerUSBRemoved:
  237.       Serial.println("USB Removed!");
  238.       break;
  239.     case DFPlayerPlayFinished:
  240.       Serial.print(F("Number:"));
  241.       Serial.print(value);
  242.       Serial.println(F(" Play Finished!"));
  243.       break;
  244.     case DFPlayerError:
  245.       Serial.print(F("DFPlayerError:"));
  246.       switch (value) {
  247.         case Busy:
  248.           Serial.println(F("Card not found"));
  249.           break;
  250.         case Sleeping:
  251.           Serial.println(F("Sleeping"));
  252.           break;
  253.         case SerialWrongStack:
  254.           Serial.println(F("Get Wrong Stack"));
  255.           break;
  256.         case CheckSumNotMatch:
  257.           Serial.println(F("Check Sum Not Match"));
  258.           break;
  259.         case FileIndexOut:
  260.           Serial.println(F("File Index Out of Bound"));
  261.           break;
  262.         case FileMismatch:
  263.           Serial.println(F("Cannot Find File"));
  264.           break;
  265.         case Advertise:
  266.           Serial.println(F("In Advertise"));
  267.           break;
  268.         default:
  269.           break;
  270.       }
  271.       break;
  272.     default:
  273.       break;
  274.   }  
  275. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement