In aller Kürze
Uwe, Du hast höchstwahrscheinlich die falsche Play-Anweisung verwendet.
Es gibt (zumindest) 3 verschiedene Play-Anweisungen:
Play Index (0x0D)
Play Folder + Dateiname (NUM) (0x0F)
Play Folder "mp3" + Dateiname (NUM) (0x12)
Das was du beschreibst ist "Play Index", dabei ist der tatsächliche Dateiname ganz egal, es zählt wirklich nur die Reihenfolge, in der die Dateien auf die SD-Karte geschrieben wurden.
Aber es gibt ja noch 2 andere Play-Anweisungen und mit diesen lassen sich gezielt Dateien mit einem bestimmten Dateinamen (3 bzw. 4stellige Ziffernfolge) abspielen. Die Aufspielreihenfolge ist dabei ganz egal.
Antwort im Detail
(das wird jetzt leider ein wenig OFF Topic)
Ich habe den DFPlayer schon für mehrere Projekte eingesetzt. Oft bei Ausstellungen (Museum) oder für "Soundinstallationen". Es hat bisher immer gut funktioniert. Es wird aber immer wieder von Problemen berichtet, das hat eventuell auch damit zu tun, dass es Player mit verschiedenen ICs gibt (siehe weiter unten).
Steuerung
Der DFPlayer wird ja über eine serielle Schnittstelle (UART) gesteuert. Das kann man "zufuß" machen oder mithilfe einer Library, davon gibt es verschiedene. Für Leute die mit Library arbeiten möchten würde ich jene von PowerBroker2 empfehlen, der hier im englischsprachigen Teil des Forums aktiv ist:
https://github.com/PowerBroker2/DFPlayerMini_Fast
Ich spreche den DFPlayer aber oft auch einfach "zufuß" an.
Zufuß / Hintergrund
Wer den DFPlayer "zufuß" ansprechen will, beschäftigt sich mit dem seriellen Protokoll, das vereinfacht so aussieht:
Byte Function Value
================================
(0) Start Byte 0x7E
(1) Version Info 0xFF
(2) Number of bytes 0x06 (Always 6 bytes)
(3) Command 0x__
(4) Command feedback 0x__ If enabled returns info with command 0x41 [0x01: info, 0x00: no info]
(5) Parameter 1 [DH] 0x__
(6) Parameter 2 [DL] 0x__
(7) Checksum high 0x__
(8) Checksum low 0x__
(9) End command 0xEF
Details siehe hier:
Commands
Bei Byte 3 wird das Kommando übergeben. Hier eine Auswahl:
0x01 Next Track
0x02 Previous Track
0x03 Specify track(NUM)
0x04 Increase volume
0x05 Decrease volume
0x06 Specify volume
0x07 Specify Equalizer
0x08 Specify repeat(NUM)
0x0C Reset module
0x0D Play (Index)
0x0E Pause
0x0F Play: Specify folder and file to playback
0x11 Loop play
0x12 Play: mp3 file [NUM] in mp3 folder
0x16 Stop
0x17 Loop Folder "01"
0x18 Random play
0x19 Single loop
0x42 The current status
0x43 The current volume
0x44 The current EQ
0x45 The current playback mode
0x48 The total number of TF-card files
0x4F The total number of folders
und noch viele mehr
Abspielen
Es gibt (zumindest) 3 Möglichkeiten, um am DFPlayer ein bestimmtes WAV oder MP3 File abzuspielen:
-
Über Track/Index
Das ist das, was Uwe beschrieben hat. Da ist der Dateiname oder Speicherort (Hauptverzeichnis oder Unterordner) völlig egal. Es zählt einzig die Reihenfolge, wie die Files auf die SD-Karte gespielt wurden. Diese Methode kommt bei bei folgenden Commands zum Einsatz: 0x01, 0x02, 0x03, 0x08, 0x11, 0x0D, 0x3C, 0x3D, 0x3E, 0x4B, 0x4C, 0x4D. -
Über Angabe von Folder und Tracknummer
Die Folder können Nummern zwischen 01 und 99 haben. Jeder Ordner darf 255 Files haben. Die Filenamen müssen so beginnen: 001, 002, 003, ... 255
Und mit .wav oder .mp3 enden.
Nach der 3stelligen Zahl und vor der Endung dürfen im Dateinamen noch andere Zeichen stehen, diese werden aber ignoriert.
Jedes File im Folder kann gezielt über dessen Filenamen (die Ziffern) angesprochen (abgespielt) werden.
Commands: 0x0F, 0x17 -
Folder mit Namen "mp3" und Tracknummer
Im Folder "mp3" dürfen sich max. 2999 Files befinden, deren Namen wie folgt beginnen müssen 0001, 0002, 0003, ... 2999
Und mit .wav oder mp3 enden.
Nach der 4stelligen Zahl und vor der Endung dürfen im Dateinamen noch andere Zeichen stehen, diese werden aber ignoriert.
Jedes File im Folder "mp3" kann gezielt über dessen Filenamen (die Ziffern) mit Command 0x12 angesprochen (abgespielt) werden.
Dateinamen
Falls Dateien über ihre Dateinamen angesprochen (abgespielt) werden sollen (Play Methoden 2 und 3), ist folgendes zu beachten (das betrifft Folder "01" bis "99" und Folder "mp3"):
Die Dateien müssen durchnummeriert sein (3 bzw. 4stellig, je nach Ordner) die erste Datei muss Nummer 1 (bzw. 001 bzw. 0001) heißen, die zweite 2 (002 bzw. 0002) und so weiter. UND es darf keine Nummer ausgelassen werden.
Foldendes ist also nicht erlaubt (Beispiel f. Folder "mp3"): 0001.mp3, 0002.mp3, 0003.mp3, 0005.mp3.
Library von PowerBroker2
Da gibt es für die drei Play-Anweisungen ebenfalls verschiedene Funktionen:
void play(uint16_t trackNum); // Play Index
void playFolder(uint8_t folderNum, uint8_t trackNum); // Play FolderNr und TrackNr
void playFromMP3Folder(uint16_t trackNum); // Play Folder "mp3" und TrackNr
Hardware-Varianten
Anscheinend gibt es DFPlayer mit unterschiedlicher Hardware.
Datails siehe z.B. hier: DF Player warning!
Noch ein wenig ON Topic:
Zum Erzeugen von "Klick-Geräuschen" könntest du dir auch TMRpcm mal ansehen: