Tonuino ohne RFID als mp3 Player

Wenn es nur um das Deaktivieren von Play / Pause geht, wenn etwas abgespielt wird:

aus

   if (pauseButton.wasReleased()) {
      if (activeModifier != NULL)
        if (activeModifier->handlePause() == true)
          return;
      if (ignorePauseButton == false)
        if (isPlaying()) {
          mp3.pause();
          setstandbyTimer();
        }
        else if (knownCard) {
          mp3.start();
          disablestandbyTimer();
        }
      ignorePauseButton = false;

musst du folgendes auskommentieren / löschen:

   if (pauseButton.wasReleased()) {
      if (activeModifier != NULL)
        if (activeModifier->handlePause() == true)
          return;
      if (ignorePauseButton == false)
/*
        if (isPlaying()) {
          mp3.pause();
          setstandbyTimer();
        }
        else if (knownCard) {
          mp3.start();
          disablestandbyTimer();
        }  
*/
      ignorePauseButton = false;

Langes Drücken bleibt vorhanden. Da würde der Shortcut gestartet werden bzw. eine Titelnummeransage kommen (was ebenfalls auskommentiert werden könnte).

        mp3.playAdvertisement(advertTrack);
1 „Gefällt mir“

Diese Abfragen sind dafür da, dass nach einem langem Druck auf Play nicht auchnoch das ausgeführt wird, was bei einem kurzem Druck passieren soll.
Das Pausieren beim Druck auf Play ist hier

Die Zeilen 978-985 kannst du also auskommentieren. Um die Ansage der Tracknummer ebenfalls zu blockieren würde ich die Zeile 1004 mp3.playAdvertisement(advertTrack); auch auskommentieren.

Habe es soeben probiert, Pause ist jetzt tatsächlich deaktiviert. Allerdings ist jetzt auch die Möglichkeit verschwunden den Track der zuvor mit einer RFID Karte gestartet wurde mit der Play-Taste erneut zu starten.

Die Shortcut-Funktion (Play 2 Sekunden drücken) funktioniert nur einmal, erneutes Drücken hat keinen Effekt. Erst nach einer Stromunterbrechung reagiert der Shortcut wieder normal.

Ähm, wolltest du nicht einen Tonuino / MP3-Player ohne RFID Karte bauen?

Stimmt. Die Versuche ohne RFID bzw. nur mit dem DFPlayer Mini brachten aber noch keinen Erfolg. Plan B ist momentan einfach zum Start einmal mit einer Karte das System zu „initialisieren“ und fortan spielt die PLAY Taste das Stück immer wieder ab.

Mein Wunsch wäre dann eine KITA Funktion. Eine Karte wählt eine mp3 Datei, Kinder können nur PLAY drücken und warten bis zum Ende abgespielt wurde. Zwischendurch PLAY drücken darf nicht unterbrechen…

Es gibt die Modifikationskarte KITA. Da wird jedoch der Play-Taster wohl noch akzeptiert (vor und zurück jedoch nicht). Du brauchst in dem Fall also eine Mischung aus KITA und Krabblermodus.

Edit:
Im Code findest du unter

class KindergardenMode: public Modifier {

folgenden auskommentierten Code.

    //    virtual bool handlePause()     {
    //      Serial.println(F("== KindergardenMode::handlePause() -> LOCKED!"));
    //      return true;
    //    }

Entferne die Kommentierung (//) und dann hast du wohl das was du willst?!

Okay, den neuen Code hochgeladen habe ich. Aber wie erstelle ich die Modifikationskarte KITA?

Adminmenü → eine Modifikationskarte erstellen → Kita Modus

Allerdings musst du die so bei jedem Anschalten wieder auflegen. Deshalb würde ich die in der Software aktivieren. Dazu kannst du

// Modifier aktivieren
  activeModifier =  new KindergardenMode();

vor

// Start Shortcut "at Startup" - e.g. Welcome Sound
  playShortCut(3);

einfügen. Dann wird der Modifier beim Start immer aktiviert

1 „Gefällt mir“

Hier findest du eine sehr gute Anleitung:

Der KITA Modus ist jetzt zwar eingestellt, aber es bleiben die alten Probleme.

Mit dem Mod

 /*

        if (isPlaying()) {

          mp3.pause();

          setstandbyTimer();

        }

        else if (knownCard) {

          mp3.start();

          disablestandbyTimer();

        }  

*/

kann ich die PLAY Taste nur einmal nutzen, dann ist Schluss - keine Reaktion mehr.
Ohne den MOD kann ich die Taste zwar nutzen aber, erneutes Drücken pausiert den Track.

Ich lösche jetzt erstmal alle Einstellungen und berichte später…

Wenn du den Kita-Modus nutzt, dann brauchst du die Änderung nicht mehr.
Nimm am Besten nochmals die original-SW und nimm nur die Änderung am KITA-Modus vor.

Irgendwie funktionieren alle Modifizierungen nicht oder nur teilweise. Ich denke, das Problem liegt darin, das während der Wiedergabe auf Eingaben per RFID oder Taste gewartet wird bzw. reagiert werden kann. Der Code müsste so umgestellt werden, das Abfragen erst nach Ende des Tracks wieder abgefragt wird…

Ich möchte euch ja nicht im Programmieren ausbremsen, aber was spricht denn gegen dies:

Der Kindergarten Modus macht das ja im Prinzip. Es wird nichts anderes abgespielt, bis das Lied zu Ende ist…

Ganz ohne Programmieren geht deine Variante auch nicht :wink:

@raznz_snasna

Also ohne Arduino und nur das DFPlayer-Modul mit Transistor und zwei Widerständen? Okay, wäre für meine Anwendung eine schöne Lösung. Ich nehme an, Busy sperrt über den Transistor den S1 Taster solange der Track läuft. Ich werde die Teile jetzt bestellen und dann berichten.

Vielen Dank an euch alle für die Lösungsvorschläge - tolles Forum!

Was möchtest du denn programmieren? Die mp3 als .txt schreiben?

So zumindest die Theorie. Wahrscheinlich muss man an den Widerständen probieren.
Einfacher wäre, wenn die Logik umgedreht aus dem DF rauskommen würde.

Was möchtest du denn programmieren? Die mp3 als .txt schreiben?<
Ähm verstehe Deine Frage nicht.

Das war an mich gerichtet.

Arduino muss den Transistor ja irgendwie steuern. Denn mittlerweile soll ja wieder ein Tonuino her (eine Karte soll ein Lied abspielen). Oder doch nicht? :man_shrugging: :upside_down_face:

So wie ich das verstehe beruht die Lösung von @raznz_snasna auf dem Stand alone Betrieb der Players. Ganz ohne Arduino

Ich denke „oder doch nicht“ denn bisher sollte er ja nur lesen, um überhaupt zu starten…

genau, denn es braucht keinen Arduino um zu sagen „spiel ein Lied“