DFPlayer mini (MP3-Modul) - Auslesen der Anzahl von Tracks

Die serielle Kommunikation ist fürchterlich langsam im Vergleich zur Ausführung von Befehlen am Arduino und braucht bei 9600 Baud ca. 1 Millisekunde pro Zeichen - in dieser Zeit können wohl ein paar Tausend Befehle durchgeführt werden.

Aber wenn du 10 Werte erhalten hast, dann ist das ja gar nicht so schlecht.

Ich habe deine Hardware nicht, aber ich glaube, du könntest mal folgendes versuchen:

#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>
SoftwareSerial mp3Serial(2,3);    // RX, TX

void setup() {
    mp3Serial.begin(9600);
    Serial.begin(9600);
    mp3_set_serial (mp3Serial);  //set softwareSerial for DFPlayer-mini mp3 module 
    delay(1000);
    mp3_get_volume();
    delay(1000);       // ein wenig warten auf Antwort, "dirty method" :-)
    if (mp3Serial.available())
    {  Serial.println("Der MP3-Player antwortet:");
        while(mp3Serial.available())
        {   Serial.print(mp3Serial.read(),HEX);
             Serial.print(" ");
        }
    }
}

void loop() 
{      
}

Damit wird die aktuelle Lautstärke abgefragt.
Das ist eher kein Code für "Normalbetrieb", sondern nur um "Quick&Dirty" mal eine Antwort zu bekommen.
Die Ausgabe erfolgt übrigens in HEX.

Du solltest auch bedenken, dass die Antwort vielleicht nicht unbedingt besonders "menschenlesbar" sein könnte...

Bei einem meiner MP3-Player zum Beispiel schaut eine Antwort auf die Frage nach der eingestellten Lautstärke so aus (es sind übrigens auch 10 Byte):

7E FF 06 43 00 00 1E FE 9A EF

Die Lautstärke "verbirgt" sich in diesem Fall im 1E, der Rest ist "Kommunikations-Beiwerk", bei meinem mp3-Player schaut das nämlich so aus:

Kommunikationsstruktur 
z.B. Die Antwort des mp3-Players auf die Abfrage der Lautstärke
Die Lautstärke hat aktuell den Wert 1E

7E FF 06 43 00 00 1E FE 9A EF
   1. Byte: 0x7E   Startzeichen der Kommunikationssequenz
   2. Byte: 0xFF   immer 0xFF
   3. Byte: 0x06   Länge des Kommandos in Byte (ohne Start, Ende, Parity) - meist 06
   4. Byte: 0x43   Kommando (in diesem Fall die Lautstärke: 43)
   5. Byte: 0x00   Feedback 00 = kein Feedback, 01 = Feedback senden (default: 00)
   6. Byte: 0x00   Data 1 (High Byte)
   7. Byte: 0x1E   Data 2 (Low Byte) - hier also der aktuelle Wert der Lautstärke
   8. Byte: 0xFE   Checksumme / Parity (High Byte)
   9. Byte: 0x9A   Checksumme / Parity (Low Byte)
  10. Byte: 0xEF   Endzeichen der Kommandosequenz

Auf die Frage nach der Anzahl der Tracks auf der SD-Karte lautet die Antwort meines MP3-Players übrigens:

7E FF 06 48 00 00 13 FE A0 EF

Die Struktur ist ganz gleich wie oben.
48 ist das Kommando ("Anzahl der Tracks auf SD") und die eigentliche Trackanzahl ist 13 - das ist ja eine "HEX-Zahl", auf der SD-Karte befinden sich also 19 Tracks (HEX 13 = 19 Dezimal).

Wie ich schon mal erwähnt habe, hab ich schon mir mehreren MP3-Playern, die sich seriell steuern lassen und Arduino gearbeitet. Die Kommunikationsstruktur war meist ziemlich ähnlich (wenn auch nicht ganz gleich). Es wäre also durchaus möglich, dass dein MP3-Player auch so ähnlich kommuniziert.