Buttons um Ordner direkt abzuspielen

Hallo zusammen

Nachdem ich bereits einen Hörbert nachgebaut und einen Tonuino gebaut habe, wollte ich beides kombinieren. Mein neuer Tonuino sieht also aus wie ein Hörbert und hat daher auch 11 Knöpfe. 3 benötige ich für Pause, vorwärts, zurück. D.h. ich habe 8 Knöpfe übrig, die ich gerne nutzen möchte, um Ordner 1-8 direkt abzuspielen.

Bei der Software habe ich ein Problem. Ich habe im loop unterhalb readButtons() folgendes hinzugefügt:

if (button1.wasReleased()){
  myFolder->folder = 1;
  myFolder->mode = 3;
  playFolder();
  break;
}

Leider funktioniert das zu Beginn nicht. Erst nachdem einmal eine Karte gescannt und Musik abgespielt wurde, funktioniert danach auch der Button. In der Ausgabe sehe ich komische Zeichen beim ersten Mal und teilweise steht was von Ordner 128 anstelle Ordner 1.
Weiss jemand, woran das liegen kann? Wird eine Variable evtl. erst beim ersten Lesen einer Karte initialisiert? Oder weise ich Ordner und Modus falsch zu?

Danke schon mal für eure Hilfe!
born

1 Like

Ich habe für meinen letzten TonUINO auch einen weiteren Knopf realisiert. Ich habe dafür die Shortcut - Funktion genutzt, damit der mit dem Taster verknüpfte Ordner einfach über das Adminmenü geändert werden kann. Bei mir steht da dann:

if (buttonSix.wasReleased()) { ////////////// 6 Taster /////////////////
      playShortCut(6);
    }

(für Code bitte den </> Knopf benutzen, das erleichtert das Lesen)
Was bei deinem Code im Vergleich zum Aufruf eines Shortcuts fehlt, weiß ich auch noch nicht so genau. Ich möchte das jetzt aber verstehen, sodass ich später mich noch einmal damit beschäftigen werde. Mehr Shortcuts wären aber eine Alternative Lösung für dein Problem.

Wenn du global z.B. hier

adminSettings mySettings;
nfcTagObject myCard;
folderSettings *myFolder;

ein folderSettings Objekt definierst
folderSettings buttonFolder;
und dann dieses ansprichst funktioniert es

if (button1.wasReleased()) {
      buttonFolder.folder = 1;
      buttonFolder.mode = 3;
      myFolder = &buttonFolder;
      playFolder();
    }

Hallo @Gute_Laune
Super, das hat so geklappt. Vielen Dank! :smiley:

Genau sowas wollte ich mir auch bauen. Nachdem ich mehrere Hörbert-Nachbauten und Tonies gemacht habe.
Wäre es möglich deinen Fork zu veröffentlichen, dass ich lernen kann wie man sowas software-technisch löst?
Wäre es auch möglich zb. die Knopfanordnung (also 9 Playlists, Zurück, Vorwärtsspulen) der HörbertBox links zu haben. In der Mitte den Lautsprecher. Und rechts davon die Könpfe für die TonUino steuerung?
Man hätte dann wiklich eine Kreuzung von einer HörbertBox und TonUINO. Sozusagen 2in1

bin gespannt!

Ich habe diese Ansteuerung über mehrere Shortcuteingaben in meinem Fork realisiert.
Ich nutze einen Analogen Eingang um 12 Befehle per Shortcut zu konfigurieren.
Das lässt sich im Adminmenü anpassen, man kann auch Modifier und Systembefehel darüber konfigurieren.

Ich such mal die Forenbeiträge raus
Das ist der HW Aufbau und die Entstehung der Idee:

Hier der Fork

Du kannst den Drehschalter auch durch ein Tastenfeld wie beim Hörbert ersetzen.
Ich wollte genau wie du beide Systeme verbinden.

Wenn ich es endlich mal schaffe will ich dieses Prinzip auch auf eine IR Fernbedienung bringen.
Sodass man verschiedene Möglichkeiten hat seinen TonUINO zu steuern.
Aber alles frei konfigurierbar, mt wenig IOs.

Ergänzung:

Hier ein Vorschlag, wie eine Tatstaur zu verdrahten wäre. Die Widerstände müssten eventuell anders dimensioniert werden.

1 Like

evtl. hilft jemandem auch diese Links weiter.

Mit Hilfe von diesen, habe ich meine Hörbert Boxen realisiert. Jedoch nicht mit einem DfPlayer mini sondern mit einem VS105b (selbe Modul wie bei TonUINOS mit ESP32)

Keypad DIY

Hoerbert Clone

Hoerbert Clone mit Attiny85 und DFPlayer

Ich habs ebenfalls gemäss dieser Anleitung verdrahtet: https://chrigas.blogspot.com/2014/12/arduino-mp3-player-7-mehrere-knopfe.html

Dazu habe ich dann die Library JC_Button, die im Tonuino verwendet wird, angepasst, dass ich sie mit meinen analog angesteuerten Buttons verwenden konnte. So musste ich im Tonuino Code selbst nicht viel umschreiben. Wenn du einen Github Account hast, kann ich dir Zugriff auf mein Repo geben.

Mein Hörbert sieht übrigens so aus:

1 Like

das ist einer meiner Hörbert Boxen.

1 Like

Das wäre hier
GitHub

Ah ich sehe gerade das Repo ist public. Du solltest meine Änderungen hier sehen: https://github.com/nicolasborn/TonUINO/commit/08699f0d37fa42ad80168218aa76a072822a1ae5
Es ist noch nicht extrem gut getestet aber sollte eigentlich passen. Je nachdem wie du die Button Matrix aufbaust, musst du die Werte in readButtons dann noch anpassen:

Top!
Sobald ich Zeit finde mache ich mich ans testen!
Tolle community hier

OK. Ich konnte nicht anders und habe deinen Code kurz überflogen.

Sehr clever, dass man nun alles über einen Analog Pin geht.

Meine Frage mal grundsätzlich. Unterstützt der Dfplayer Mini playlists ? Also dass man bei wiederholte drücken der selben Taste zum nächsten Trackt springt? (so habe ich es bei meinem Klon gemacht mit dem Vs105b Modul)

Wie hast du das genau verkabelt? Einfach das Keyboard um die zusätzlichen Taster erweitert? Ich habe 9 Playlist Tasten und zwei Funktionstasten gebraucht. Wäre das auch möglich innsgesamt 14 Knöpfe zu haben (reicht das mit den Widerständen?)?

Es wären dann 11 Tasten für den Hörbertteil und 3 für den Tonuino.

Spricht du von meinem Fork oder von @born 's.

Der DFPlayer unterstützt keine Playlist, das macht die TonUINO Software.

In meinem Fork kommen die 12 Taster zusätzlich zu den 3/5 Bedientaster des TonUINO.

Du kannst auf die 12 Tatser/Eingaben alles legen.
Jeden Abspielmodi, alle Modifier oder Befehle wie Play/Pause, vor Zurück oder eine Lautstärke Stufe.

Ergänzung: Theoretisch sind die 12 auch auf 100 erweiterbar. Das hängt davon ab wie klar die Analogen Werte erfasst werden können.

Danke für die Klarstellung bezg. Playlist. Hätte ich ja auch draufkommen sollen dass man die Knöpfe dann einfach als shortcuts verknüpft.

Jetzt doch nochmals. Irgendwie stehe ich immer noch aufm Schlauch. Angenommen ich mache einen Shortcut auf Knopf X. Dieser soll Hörspiel Modus im Ordner 1 als erstes mal von Anfang an spielen. Spielt er dann beim erneuten drücken den nächsten Trakt ab? Was passiert wenn ich dazwischen Knopf Y drücke welcher Ordner 2 abspielt. Was passiert denn wenn ich wieder Knopf X drücke 9?

Dieses Prinzip der Shortcuts ist noch nicht in meinem Kleinhirn angekommen :sweat_smile:

Der Hörspielmodus spielt immer einen zufälligen Track aus dem Ordner. Das macht er jedes Mal wieder wenn der Shortcut aktiviert wird. Meinst du wirklich den Hörspielmodus oder den Hörbuchmodus?
Grundsätzlich funktioniert ein Shortcut so, als wenn du eine genauso porgrammierte Karte vorhalten würdest.

Richtig. Hörbuch Modus natürlich.
Wenn ich aber meine Karte ran halte dann spielt der ja einfach wieder dort wo das Hörbuch aufgehört hat.
Welche Modus muss ich denn nehmen um eine vorgegebene Reihenfolge als playlist zu simulieren? Also immer wenn die selbe Karte rangehalten wird der nächste Titel gespielt wird?
Zu meiner Verteidigung muss ich sagen dass ich bis jetzt immer den Hörbuch Modus gebraucht habe. Mea culpa.

Dafür gibt es keinen Modus. Hier sind die Modi alle erklärt
Übersicht der Bedienung TonUINO - Tipps und Tricks - TonUINO (voss.earth)
Für das wechseln der Tracks werden ja meist die Vor- und Zurücktaste verwendet und nicht die Karte. Vielleicht kann man den Hörspielmodus ja so modifizieren, dass er eine Reihenfolge einhält und nicht einen zufälligen Track nimmt.

Es gäbe da eventuell die Möglichkeit den Hörbuchmodus so zu verändern, dass beim wiederauflegen der karte, nicht der zuletzt gespielte track gespielt word, sondern der nächst folgende. Hätte aber den Nachteil ,dass der eigentliche zweck des speicherns des Fortschrittes im Hörbuchmodus nicht mehr exakt erfüllt ist. Oder man müsste einen neuen Abspielmodus erfinden. zB. Album mit memory, der so wie oben beschrieben funktioniert.

Den Hörbuch Modus verlieren kann ich meinem Sohnemann nicht antun.

Aber einen modifizierten Hörbuch Modus klingt sehr spannend. Mal schauen ob ich was hinkriege mit meinen mickrigen Programmierfähigkeiten.

Falls jemand schon mehr wüsste wie man das bewerkstelligen könnte, bitte melden :sunglasses: