Tonuino ohne RFID als mp3 Player

Hallo!

Mein erster Tonuino mit RFID funktion ist soweit fertig und funktioniert super. Für ein Unterrichtsprojekt möchte ich eine abgespeckte Version ohne RFID Funktion einsetzten. Das heißt es gibt nur ein Audiofile auf der SD Karte und mit dem Play-Button spielt das Audiofile komplett ohne Unterbrechung ab und stoppt.

Ich habe schon alternative .ino Dateien probiert, leider funktioniert keine so wie beschrieben. Kann mir jemand einen tipp geben, wie ein alternatives Programm aussehen muss oder sogar schreiben?

Viele Grüße!

Du könntest die Shortcutfunktion des TonUINO nehmen. Da passiert ja etwas ganz ähnliches. Das kann auf jeden Fall auch beim selvst schreiben helfen.
Alternativ hilft dir vielleicht der Beispielcode von Buttonboard. Da sind sozusagen ganz viele Shortcuts drin.


Das hier ist vielleicht auch interessant

1 „Gefällt mir“

Das empfohlene Thema ist verdammt lang und ich fürchte das an meinem Wunsch zu weit entfernt ist.

Was ich noch festgestellt habe:
Nach dem Einschalten des Tonuino hat die PLAY taste keine Funktion. Wurde aber eine Audiodatei per Karte gestartet, dann kann die Play-Taste diese Stück immer wieder ohne Karte starten. Leider pausiert das Stück wenn PLAY nochmals gedrückt wird.

Im Prinzip müsste der vorhandene Code nur leicht angepasst werden, damit:

  1. Play sofort ein Audiofile startet - meinetwegen in Ordner 1, File 001.mp3
  2. Erneutes Drücken von PLAY ignoriert wird solange File 001.mp3 noch läuft.

Wer könnte das anpassen?

https://wiki.dfrobot.com/DFPlayer_Mini_SKU_DFR0299

Da brauchst du keinen Arduino, sondern kannst denAD Key Modus nutzen

Das könnte man eventuell über einen Transistor am BUSY lösen.
Also nur wenn der High ist, funktioniert der Taster

Das ist so nicht ganz korrekt. Er kann dann zum Beispiel ein Shortcut abspielen, der im Adminmenü konfiguriert wurde.
So wie ich dich verstanden habe, geht die Shortcutfunktion schon in die Richtung, in die du willst. Bei langem Druck auf Play wird dann etwas definiertes ohne RFID-Karte abgespielt. Da könntest du dir anschauen, wie das gelöst ist, um es dann bei einem kurzen Druck auf Play ähnlich umzusetzen.

Wenn es dir wirklich nur um einen Button geht der die Wiedergabe eines Tracks startet, hilft dir vielleicht dieses Projekt

Moin, erstmal vielen Dank für die Lösungsvorschläge! Inzwischen war einiges durcheinander geraten und keine Programmierung wollte noch gelingen. Nach erneutem installieren der nötigen Bibliotheken funktioniert die Programmierung aber wieder.

Den Code für die Applausmaschine habe ich probiert, leider passiert beim verbinden mit einem Taster der Kontakte GND und Digital PIN 7 nichts.

Die Shortcut-Funktion geht im Prinzip, hat aber auch den Effekt das die Wiedergabe stoppt sobald Play / Pause gedrückt wird.

Im tonuino.ino gibt es eine Funktion " ignorePauseButton == false". Habe alle Einträge auf „true“ geändert aber ohne den gewünschten Erfolg.

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: