Anfängerfrage - Unterschiede Abspielmodi Hörbuch/Hörspiel

@Aufdiebruegge
Ich möchte bei meinem ersten Projekt genau so etwas einbinden - also die Möglichkeit haben schnell einen Titel anwählen, da ich z.B. Hörbücher in mit über 80 Titeln habe. Hier finde ich deine Lösung mit Display und Rotary Encoder super - kannst du mir genauer beschreiben wie du das umgesetzt hast?
Das würde mir wirklich sehr helfen.

Danke Peer für die Anpassung, mir gehen die Ordner aus und ich habe noch Hörbücher in peto.

Das wird als nächstes in meine Software wandern.

Ich habe nochmal über den „Hörbuch Modus von bis“ nachgedacht.

Mir ist dabei etwas eingefallen, mit dem man zumindest zwei Trackspeicher pro Ordner erzeugen kann.
Die maximale Ordneranzahl im DFPlayer ist 99, auf der RFID Karte habe ich 2Byte (max. 255) für die Ordnernummer platz.

Man könnte jetzt bei 101 erneut anfangen die Ordner zu zählen und so weiter 99 virtuelle Ordner erzeugen, die man im EEPROM ablegen kann.

01-99 Hörbuchspeicher 1
101-199 Hörbuchspeicher 2

Voraussetzung ist, dass es im EEPROM so viel Platz hat. Ich habe mich noch nicht mit dem beschäftigt.
Das sollte relativ simpel in @Peer 's Code zu implementieren sein. Wenn ich dafür Zeit finde, wird das mein nächstes Projekt.

Klingt interessant. Nur wird man da glaub noch schneller den Überblick über die ganzen Ordner mit den MP3s verlieren… :thinking:

Ich hab die Virtuellen Ordner für einen weiteren Speicherplatz jetzt umgesetzt und erfolgreich getestet.
Die Ergänzung ist sehr simpel.
Allerdings erst einmal ohne integration in das Adminmenü.

Für die Erweiterung müssen zwei Methoden „umgeleitet“ werden.
Das geht am bestem mit Suchen&Ersetzen.

Zuerst müssen folgende beiden Methoden im Code ersetzt werden:

„mp3.playFolderTrack“ ersetzten durch „PlayFolderMP3“

&

„mp3.getFolderTrackCount“ ersetzten durch „getFolderMP3Count“

Danach folgende neue Methoden einfügen:

void PlayFolderMP3 (uint8_t folder, uint8_t track) {
      uint8_t new_folder = 0;
      
      if (folder > 100) {
        new_folder = folder - 100;}
      else {
        new_folder = folder;  }
        
      mp3.playFolderTrack(new_folder,track);
    }

uint8_t getFolderMP3Count (uint8_t folder) {
      uint8_t new_folder = 0;
      
      if (folder > 100) {
        new_folder = folder - 100;}
      else {
        new_folder = folder;  }
        
      return mp3.getFolderTrackCount(new_folder);
    }

Als nächstes integriere ich es noch in das Admin Menü.

Edit: Ich habe den Code ein Nischen angepasst, damit der erste virtuelle Ordner bei 101 beginnt und nicht bei 100.

2 „Gefällt mir“

Super Idee!
Danke für die Umsetzung!
Wird für Deine „virtuellen“ Ordner die „Hörbuch Modus von bis“-Anpassung im Code benötigt, und wie konfigurierst Du z.Zt. die Karten auf die virtuellen Ordner?
Mir gehen nämlich auch gerade die regulären Ordner aus.

Ich konfiguriere manuell über die App.

Du kannst das unabhängig verwenden.

Alles klar, danke!
Dann muss ich noch etwas warten, bis ich Deine Erweiterung nutzen kann. Die Android-App kann ich nämlich nicht verwenden :man_shrugging:

Auf die schnelle kannst du folgendes ändern, dann kannst du bis Ordner Nr. 199 scrollen.

An folgender Stelle:

bool setupFolder(folderSettings * theFolder) {
  // Ordner abfragen
  theFolder->folder = voiceMenu(99, 301, 0, true, 0, 0, true);

Die „99“ in „199“

Es ist nicht ganz Intuitiv, aber sollte funktionieren.
Ich würde langfristig eine Auswahl in den Hörbücher Modis einbauen ob man Speicherplatz 1 oder 2 verwenden will.

Leider funktioniert Deine Erweiterung bei mir nur teilweise.
Den Ordner 101 auf der SD-Karte kann ich nun über das Admin-Menü auswählen und ihm auch einen Modus z.B. Hörbuch (Option 5) zuweisen. Lege ich dann aber die so konfigurierte Karte auf spielt der TonUINO nicht den Inhalt von 101 sondern 01 ab?!

Wie hast du denn den Speicherplatz 2 auf der RFID Karte definiert?

Das ist ja auch richtig.
Der DFPlayer akzeptiert nur 99 Ordner.
Die Virtuellen Ordner stellen nur einen weiteren Speicherplatz für Hörbücher zur Verfügung.
Aber erst zusammen mit der Hörbuch von bis Funktion kannst du Ordner sparen, da du zwei Hörbücher pro Ordner inklusive Speicherung nutzen kannst.

@Manuel der Hörbuchstand wird im EEPROM unter der Adresse des Ordners abgespeichert.
So hat man pro Ordner eine Speicheradresse.
Ich zähle die Ordner aber jetzt erneut von 101-199 um ein weiteres mal eine Speicheradresse pro Ordner zu bekommen.
Ordner 101-199 spielen aber den Inhalt von Ordner 1-99, mehr geht ja nicht.

Ok, hatte den Funktionsumfang Deiner Erweiterung falsch verstanden.
Danke für Deine Erläuterungen! Jetzt ist mir klar, dass Du die Speicherung des Hörbuch-Fortschritts im EEPROM meinst.
Jetzt frage ich mich allerdings gerade, da ich z.B. drei Teile Jim Knopf zu verwursten habe, ob es möglich wäre, über ein zusätzliches „if“ also ein „else if“ noch die virtuellen Ordner 201 bis 299 zu erschaffen, so dass 3 Speicherstände pro Ordner möglich wären? :thinking:

Das Problem ist, das ich auch die Nummer des virtuellen Ordners auf der RFID Karte ablegen muss. Der Maximal wert für die Ordnernummer ist aber 255.
Man könnte jetzt natürlich sagen, das man die ersten 55 Ordner mit drei Plätzen ausstattet, die Ergänzug ist nicht schwer.

Noch effektiver wäre ein weiteres Byte auf der RFID Karte zu verwenden. Dann muss aber ein Byte des Cookie dran glauben.
In dem Fall könnte man 661 Speicherplätze pro Ordner generieren.
Der Umbaubist aber größer und ich weiß nicht wann der EEPROM aufgibt, wegen Platzmangel.

Oder man verwendet das Byte für die Versionsnummer um mehr Platz für die Speicheradressierung zu bekommen.

oder du verwendest den bisher ungenutzten Bereich der RFID-Karten. Dann sind die Karten weiterhin kompatibel, ohne das MagicCookie oder die Version zu ändern.

Wie groß ist der?
Ich habe mich mit den Tags noch nicht beschäftigt und mich nur an dem bekannten orientiert.

Wir nutzen ja Sektor 1 / Block 4. Das sind 16 Byte. Davon sind noch 7 Byte frei. Generell hat die Karte bei Classic Karten 1KB. Allerdings muss man da das lesen und schreiben entsprechend umbauen/erweitern. Wenn man in den genannten 16 Byte bleibt wäre es einfacher.

Schau mal hier:

Ich meine, es sind 4 Sektoren je 16 Byte.
Davon wird der 4. Sektor genutzt

Diese Info ist nicht mehr 100% aktuell. Aber als Info reicht: Es sind in dem Bereich den wir beackern noch 7 Byte frei.

Hoffe mal, dass diese noch aktuell ist: