Fragen zum Gd3200b

Fortsetzung der Diskussion von Anpassungen für Player mit dem DFROBOT LISP3 Chip:

Hallo,
von der Programmierung habe ich keine Ahnung und verfolge verwirrt die Diskussion. Für meine 2. Box habe ich einen Player mit dem Chip 3200B erwischt und habe den Fork von Thomas-Lehnert aufgespielt, bin aber noch dabei die Box zu basteln.
Muss ich einige Teile des Codes für die richtige Funktion einfügen oder erstmal hören ob „mein“ Player auch Fehler produziert?
Viele Grüße

Diese Diskussion betrifft vor allem den Player von DFROBOT, wie im Titel zu erkennen ist. Viele, die in letzter Zeit einen GD3200b geliefert bekommen haben, haben danach diesen Player gekauft, weil er kein Klon ist und deshalb besser funktioniert. Mit einigen GD3200b gibt es nämlich erhebliche Probleme. Teilweise haben sie Probleme, die Anzahl der Tracks innerhalb des Ordners zu ermitteln, einige spielen die Ansagen aus dem mp3-Ordner nicht ab, …
Probiere einfach mal aus, wie gut dein Player funktioniert. Im seriellen Monitor zeigt der TonUINO nach dem auflegen einer Karte immer XX Tracks in Ordner YY an. Schau einfach, ob das zu deiner SD-Karte passt. Einige Probleme bekommt man mit relativ kleinen Änderungen in den Griff. Wenn er den mp3-Ordner aber nicht abspielt, müsste man den Inhalt dann auf mehrere andere Ordner verteilen und den Code daran anpassen, dass die Dateien in mehreren unterschiedlichen Ordnern liegen. Das ist dann doch sehr viel Aufwand.
Grundsätzlich steht in der FAQ ja nicht ohne Grund

Ich hatte vor kurzem eine Diskussion mit @raznz_snasna bezüglich des Problems der Angabe der Trackzahl im Ordner. Das betraf zwar den MHETLIFE 24K 16SS, aber die Lösung wurde von der Idee von @Bastelmatz bezüglich des GD3200 abgeleitet. Folgend der interessante Teil, der hier vielleicht auch helfen könnte.
Die Codeteile wurden in meinem Fork Always queue eingearbeitet, den du ja verwendest.
ZITAT:
Das Problem der Trackzahl bin ich ähnlich angegangen, wie das schon von Bastelmatz für den GD3200 gelöst hat. Allerdings war es mir zuviel Aufwand jeden Ordner mit einem StilleTrack Tracknummer 000 auszustatten und habe eine andere Lösung gefunden, die das nicht erfordert. In der Funktion Ordner abspielen habe ich ein paar Codezeilen eingefügt, die nach auflegen einer Karte, oder Starten eines Shortcuts den ersten Titel des aktuellen Ordners kurz anspielt, wieder Stoppt und die Trackzahl neu ausließt. Damit das nicht hörbar ist, wird die Lautstärke des Players für das Anspielen auf 0 gesetzt und anschließend wieder auf den ursprünglichen Wert. Das ganze funktioniert leider nur mit reichlichen delays, so dass das Abspielen des Ordners ca 2 Sekunden verzögert erfolgt. das funktioniert in meinem Fork mit ca 90% Erfolg. Ab und zu haut er trotzdem daneben. Sporadisch auch noch comError 3, aber deutlich weniger als mit der originalen Library. Ich denke, dass die Firmware des 16SS noch ziemlich buggy ist, was Stephan ja auch schon festgestellt hat. Also mit gelegentlichen Zicken ist der Player nutzbar, aber Top ist anders.
Anbei noch der Code. Da sind jetzt noch viele SerialPrints drin zur Kontrolle. Die kann man aber auch rausnehmen. Die beiden Funktionen muteOn() und muteOff () sind zum Stummschalten des Anspielens verantwortlich.

// ***************** MUTE **********************************
uint8_t muteVol;
void muteOn()
{
muteVol= (mp3.getVolume());
Serial.print("muteVol :");
Serial.println(muteVol);
delay(100);
mp3.setVolume(0);
}

void muteOff()
{
delay(500);
mp3.setVolume (muteVol);
delay(500);
uint8_t lastVolset = (mp3.getVolume()) ;
Serial.print("lastVolset :");
Serial.println(lastVolset);
delay(1000);
}

// ***************** Ordner abspielen ******************
void playFolder()
{
#ifdef Konsole
  Serial.print(F("Play Folder: "));
  Serial.println(myFolder->folder);
#endif
  disablestandbyTimer();
  randomSeed(millis() + random(1000));
  knownCard = true;

  _lastTrackFinished = 0;
  numTracksInFolder = mp3.getFolderTrackCount(myFolder->folder);      // Anzahl der Tracks im Ordner
  firstTrack = 1;
#ifdef Konsole
  Serial_println_F(getModeName(myFolder->mode));                      // Anzeige Abspielmodus
  Serial.print(numTracksInFolder);                                    // Anzahl der Tracks
  Serial.print(F(" Dateien in Ordner "));
  Serial.println(myFolder->folder);                                   // Ordner Nr
#endif

  // ****************************************************************************
muteOn();
mp3.playFolderTrack(myFolder->folder,1);
delay(1000);
mp3.pause(); 
delay(100);
muteOff();
  _lastTrackFinished = 0;
  numTracksInFolder = mp3.getFolderTrackCount(myFolder->folder);      // Anzahl der Tracks im Ordner
  firstTrack = 1;
#ifdef Konsole
  Serial_println_F(getModeName(myFolder->mode));                      // Anzeige Abspielmodus
  Serial.print(numTracksInFolder);                                    // Anzahl der Tracks
  Serial.print(F(" Dateien in Ordner "));
  Serial.println(myFolder->folder);                                   // Ordner Nr
#endif
  
  
  // **************** Abspielmodi ***********************************************