Schutz vor unbeabsichtigter Betätigung der Lautstärketasten
(nächster/vorheriger Track), wenn die aktuelle Position im Track größer 5 Minuten ist.
Aktion erfolgt erst nach erneuter Bestätigung innerhalb von 3 Sekunden.
zu 1: wie kann ich mir das vorstellen?.
Ich kann mit langem Druck die Lautstärke ändern, ob SD oder USB.
zu 2: nächster/vorheriger Track zu jeder Zeit machbar, ob SD oder USB.
zu 3: dieser Punkt ab und an, ich hab aber noch nicht erkannt wann?
Hier mal eine Version sowohl für DFPlayer Mini als auch BY8001-16P, es sind fünf (5) Brücken zu setzten.
Wenn man die verschiedenen Library installiert hat, kann man je nach Modul die eine wie auch die andere passende Software flashen.
// Konfiguration Skip Protection
const int MP3_FOLDER_0700_LENGTH = 7000; // (7 sek) Länge in ms des Tracks 0700.mp3 im MP3 Ordner
const int SKIP_PROTECTION_CONFIRMATION_TIME = 3000; // (3 sek) Zeit in ms, in der ein weiterer Tastendruck erfolgen muss, damit zum nächsten Track gewechselt wird
const int SKIP_WITHOUT_CONFIRMATION_WINDOW = 300; // (5 min) Zeitfenster in sek am Anfang eines Tracks in dem ein Wechseln ohne Nachfrage erfolgt
@R0Y4LTS, geht auch mit SD-Karte, werde da auch nach dem 3 Sekunden Tastendruck gefragt.
Also, es ist so gedacht: Wenn man die Lautstärketasten drückt um entweder zum nächsten oder vorherigen Track zu kommen, prüft die Box zunächst, ob der Track mehr als 5 Minuten abgespielt wurde. Sind noch keine 5 Minuten um, springt die Box einfach zum gewünschten Track. Wenn bereits mehr als 5 Minuten vergangen sind, fragt die Box nach, ob wirklich zu einem anderen Track gesprungen werden soll. Mann muss innerhalb von 3 Sekunden noch mal die Lautstärketaste für die entsprechende Richtung betätigen.
Bei Liedern ist es vielleicht irrelevant, aber bei Hörspielen mit vielleicht 40 Minuten meines Erachtens Sinnvoll. Eine gute Balance zwischen schneller Navigiertbarkeit und Schutz vor unbeabsichtigten Trackwechsel. Der Trackwechsel selbst ist natürlich nicht mehr so schlimm mit der Spulen Funktion. Aber das ist quasi die Kür.
Aber jetzt wird’s interessant: Die Frage ist, ob wenn du gefragt wirst, ob du zum nächsten Track wechseln möchtest, der aktuelle Track nach der Frage an der selben Stelle fortgesetzt wird (Spotplay). Nach meiner Erwartungshaltung dürfte das nur mit dem USB-Stick funktionieren (Laut Datenblatt und meinen Tests). Super wäre es natürlich, wenn es auch mit SD-Karte funktionieren würde, da USB ein bisschen mehr Strom zieht.
Für diesen Test hab ich mir extra 64GB SD Mini Karte zugelegt.
Test: 64GB SD Karte, exFAT formatiert, Inhalt gleich 8GB SD-Karte, wird nur immer der 1. Titel abgespielt.
Fazit, wie auch schon Andere mehrfach bemerkten 32GB dann ist Schicht im Schacht.
Frage an Alle, ich möchte gern in der Konsole bei Play die Laufzeit sehen.
Denke wenn es nicht in der Library ist, einen Timer mit Druck auf die Playtaste starten und im richtigen Zeitformat in der Konsole ausgeben (00:00:00). Aber wie, ich bin halt kein Programmierer.
In einem anderen Sketch habe ich das schon gesehen, das rückwärts die Sekunden gezählt werden.
Hintergrund auch für den Test Teil 2.
Noch kann ich es nicht bestätigen, weder SD noch USB Stick, nichts Spotplay.
Also nach meine Test, mit USB oder SD, kommt die Frage, Fensterzeit auf 45 Sekunden reduziert, ob ich wechseln will, nach einer Bestätigung allerdings spielt er die Tracks immer vom Anfang.
Der folgende Befehl gibt die Laufzeit des aktuellen Tracks in Sekunden wieder. Den könntest du ausgeben: mp3.getBY8X0116P()->getCurrentTrackElapsedTime()
Dass der nächste Track, nachdem man den Wechsel bestätigt hat, von vorne gespielt wird ist das gewollte Verhalten. Es wäre zu ermitteln, ob nach der Frage der Box ohne eine Bestätigung deinerseits, der durch die Frage unterbrochene Track an der unterbrochenen Stelle vorgeführt wird. Das wäre dann der Beweis für Spotplay.
Das tut das Modul, es fragt, reagiere ich nicht in den 3 Sekunden, spielt es den Track an der Stelle weiter wo unterbrochen wurde.
Ich höre friedlich weiter, das Lied ist am Ende, da kommt ohne das ich was erneut drücke wieder die Frage, ich mache auch diesesmal nichts und er spielt wieder an der unterbrochene Stelle weiter.
ok, hab ich mal probeweise in den Code ‚gefrimmelt‘.
if (pauseButton.wasReleased()) {
if (ignorePauseButton == false) {
if (fastForRewStatus == FFRS_None) {
if (isPlaying()) {
mp3.pause(); Serial.println("Pause");
}
else
mp3.start(); Serial.print("Play ");
Serial.print(mp3.getBY8X0116P()->getCurrentTrackElapsedTime()); Serial.println(" sec");
Nur wenn ich jetzt die Pausetaste drücke erhalte ich eine Zeitanzeige!
Formatiert ist die auch nicht, 00:00:00, sekündlich macht ja wahrscheinlich zu viel ‚Trafic‘. Aber wie kann man es bewerkstelligen das die Zeitanzeige standig z.B. hinter ‚Play‘ steht und sagen wir mal alle 5 Sekunden aktuallisiert wird.
mp3.getBY8X0116P()->getCurrentTrackTotalTime()
Das ist die Gesamtzeit eines Tracks.
Eine neue, nicht endgültige Version der Playtime.
TonUINO+ Version 1.0 BY8001-16P
Timo Schulze
Basierend auf TonUINO Version 2.0
(c) Thorsten Voß
Firmware Version: 0x92 = v2.0
Card UID: A3 40 ED 2D
PICC type: MIFARE 1KB
Authenticating using key A...
Current data in sector:
1 7 00 00 00 00 00 00 FF 07 80 69 FF FF FF FF FF FF [ 0 0 1 ]
6 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 0 0 0 ]
5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 0 0 0 ]
4 13 37 B3 47 01 09 02 00 00 00 00 00 00 00 00 00 [ 0 0 0 ]
Reading data from block 4 ...
Data in block 4:
13 37 B3 47 01 09 02 00 00 00 00 00 00 00 00 00
20 Dateien in Ordner 9
Album Modus -> kompletten Ordner wiedergeben
Albummodus ist aktiv -> nächster Track: 2
Albummodus ist aktiv -> nächster Track: 3
Albummodus ist aktiv -> nächster Track: 4
Albummodus ist aktiv -> nächster Track: 5
Albummodus ist aktiv -> nächster Track: 6
Albummodus ist aktiv -> nächster Track: 7
Albummodus ist aktiv -> nächster Track: 8
Pause: 00:00:02
Total: 00:06:24
Play:
Hallo zusammen,
Ich habe sowohl den DfPlayerMini als auch den BY8001-16p mit 64GB Micro-SD am laufen.
Bei meinem BY8001 funktioniert auch Spot/Insertion-Play mit der SD-Karte.
Allerdings ist das Modul etwas langsamer beim Ausführen von Kommandos, als der DfPlayer.
Manchmal muß man bspw. das Play-Kommando dopoelt senden.
Evtl. liegt es aber nicht nur am Modul, sondern an der verwendeten Bibliothek…
Würdest Du uns auch verraten wie das genau funktioniert? Kann man das in die vorhandene Firmware auch einbauen? Nicht das ich Probleme mit dem Speicherplatz hätte… aber haben ist besser als brauchen