Klopf-/Klickgeräusche erzeugen

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) :slight_smile:

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:

  1. Ü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.

  2. Ü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

  3. 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:

2 Likes