erstmal ein kurzes “Hallo” in die Runde - ich lese zwar schon eine Weile mit, jetzt bin ich aber an dem Punkt an dem ich eine Frage stellen will und werde somit “aktiv”
Ich habe meiner Tochter auf einer Platine einen Tonuino zusammengelötet, prinzipiell nach Schaltplan mit Standardkomponenten und Stromversorgung via Wemos Battery Shield v3. Soweit alles prima. Die Geschichten wurden als Modus 5 (Hörbuch) via Serial Monitor der Arduino IDE auf die entsprechenden Ordner programmiert. Läuft bestens, daher auch feinsten Dank an die Entwicklung der Software.
Aber eine Frage/Problem(chen) steht noch im Raum. Die Buttons sind so programmiert dass ein kurzer Tastendruck die Lautstärke ändert, ein langer die Tracks schaltet. Die Kleine kommt damit sehr gut zurecht. Ab und an steckt sie aber mitten in einem Hörbuch und will alles trotzdem noch mal von Anfang an hören. Nun muss man mit langen Tastendrücken lange navigieren bis man wieder beim ersten Tack angekommen ist. Vielleicht habe ich es auch überlesen/nicht gesehen, aber gibt es die Möglichkeit den Status des Hörbuchs zu “resetten”. Sprich, das so umzustellen dass beispielsweise ein langer Druck auf die Pausetaste das zurücksetzt? Ich hatte ehrlicherweise noch nicht die Zeit im Quellcode zu suchen, aber vielleicht hatte ja außer mir schon einmal jemand die selbe Fragestellung (gelöst)?
Bilder folgen irgendwann auch noch (Gehäuse ist gedruckt, mit lila Filament).
Das geht bisher leider nicht. Verwendest Du denn 3 Tasten oder 5?
Ich frage, weil bei 3 Tasten ein langer Druck auf “Zurück” schon belegt ist.
Und verwendest Du die DEV oder Master?
Hab ich genauso implementiert in meiner Firmware. 5s long press während Playback im Hörbuchmodus springt zu Track 1. Sollte eigentlich kein Problem sein, daß in DEV auch einzubauen.
Denkbar wäre auch ein kurzes Drücken von VOR und ZURÜCK zusammen. Oder etwas länger halten, dann würde ich aber die Haltezeit für das Adminmenü verlängern
Da es mein erster Beitrag ist… erst einmal Danke ans Forum.
Dadurch habe auch ich es geschafft einen funktionierende TonUINO (zumindest die Innereien, die Box fehlt noch) mit Features wie Software Abschaltung usw. vor mir liegen zu haben. Und das sogar auf Anhieb.
Da meine handwerklichen Fähigkeiten aber deutlich besser als meine Programmierfähigkeiten sind, habe ich zum diesem Reset eine Frage.
Ich verwende die Dev Version, aktuell mit 3 Knöpfen, und habe versucht den Code, den ich ändern müsste zu finden. Ich gehe davon aus, dass der Code bei Stephan von Zeile 988-999 ist. Und im Dev Code müsste es irgendwo ab Zeile 1359 sein, ist das richtige?
Aber was muss ich da genau ändern, muss ich da einen ganzen Abschnitt ändern und/oder anpassen wegen irgend welchen „Referenzen“ oder kann ich einfach „mp3.playMp3FolderTrack(802);“ in „playback.playListItem = 1;“ ändern? Bei Stephan steht nämlich auch noch etwas von EEPROM und STATUSLED? Hat jemand die Funktion in der Dev Version eingefügt und könnte den entsprechende Code einfach posten?
Moin,
wenn du die DEV von Thorsten meinst, dann sollte doch eigentlich folgende Änderung in den Zeilen 985-1003 ausreichen (der Teil mit der Bedingung um mode 5):
} else if (pauseButton.pressedFor(LONG_PRESS) &&
ignorePauseButton == false) {
if (activeModifier != NULL)
if (activeModifier->handlePause() == true)
return;
if (isPlaying()) {
uint8_t advertTrack;
if (myFolder->mode == 3 || myFolder->mode == 9) {
advertTrack = (queue[currentTrack - 1]);
}
else {
advertTrack = currentTrack;
}
// Spezialmodus Von-Bis für Album und Party gibt die Dateinummer relativ zur Startposition wieder
if (myFolder->mode == 8 || myFolder->mode == 9) {
advertTrack = advertTrack - myFolder->special + 1;
}
mp3.playAdvertisement(advertTrack);
if(myFolder->mode == 5){
EEPROM.write(myCard.folder,1);
}
}
Ggf. noch den CurrentTrack anpassen, falls erneut gespielt werden soll. Wird dann allerdings nur gemacht, wenn er grade spielt
Edit:
Sorry hatte die Zeilen aus dem Master referenziert, danke @stephan für den Hinweis. Habe den obigen Code entsprechend geändert.
Danke für den Hinweis. Hört sich sehr einfach und plausibel an. Allerdings habe ich noch etwas Probleme die richtige Stelle zum einfügen zu finden.
Ja, ich meine DEV von Thorsten. Kann es sein das du mit Zeile 246-259 den Master code meinst? Oder stehe ich irgedwie auf dem Schlauch?
Ich habe versucht die entsprechende Stelle
mp3.playAdvertisement(currentTrack);
im DEV code zu finden, bin aber aber gescheitert. Ich denke meine ursprüngliche Vermutung ab Zeile 1359 ist auch falsch.
Danke für die Hilfestellung. Nach etwas rumprobieren habe ich den oben referenzierten Code nun wie folgt geändert (für alle die gerne copy&paste machen wollen )
} else if (pauseButton.pressedFor(LONG_PRESS) &&
ignorePauseButton == false) {
if (activeModifier != NULL)
if (activeModifier->handlePause() == true)
return;
if (isPlaying()) {
uint8_t advertTrack;
if (myFolder->mode == 3 || myFolder->mode == 9) {
advertTrack = (queue[currentTrack - 1]);
}
else {
advertTrack = currentTrack;
}
// Spezialmodus Von-Bis für Album und Party gibt die Dateinummer relativ zur Startposition wieder
if (myFolder->mode == 8 || myFolder->mode == 9) {
advertTrack = advertTrack - myFolder->special + 1;
}
if (myFolder->mode == 5) {
currentTrack = 1;
EEPROM.update(myFolder->folder, currentTrack);
mp3.playFolderTrack(myFolder->folder, currentTrack);
}
else{
mp3.playAdvertisement(advertTrack);
}
}
Scheint zu funktionieren. Im Hörbuchmodus wir bei langem Drücken von play/pause der Speicher zurückgesetzt und Track1 wird abgespielt.
Bei den anderen Modi gibt es weiterhin die Track-Ansage.
Super, genau dass, nach dem ich gesucht habe! Mein Sohn hört mittlerweile auch längere Hörbücher die er nicht immer am schafft. Wenn er dann mal etwas anderes zwischendurch gehört hat mag er gerne von Vorne anfangen, jetzt klappt das dank euch auch!
Hallo zusammen.
Ich möchte es bei langem Tastendruck auf die „Trackzurück“ Taste haben.
Die Play Pause Taste, nutzen wir doch auch sehr oft, wenn es darum geht wie lange das Hörbuch denn noch geht. (Darf ich das noch fertig hören, Papa??? Ja, wenns net so lange geht. OK. Ist bei Nummer 32 von 40)
Kann mir das bitte jemand coden?
Oder Kann ich den Code von Kuzco nehmen und einfach nur die erste Zeile ändern in…
„} else if (previousButton.pressedFor(LONG_PRESS) &&“
und dann einfach hinte die 1003 Zeile drann hängen.
Ist das möglich? Ich habe übrigens auch die DEV mit 5 Tasten.
Hallo. Also gut. Ich habe das bei 1005 einfach dahinter gesetzt. Geht soweit.
Aktueller Stand wird nochg angesagt bei langem Druck auf Play/Pause.
Spielstand wird zurückgestzt bei langem Druck auf „Leiser“
PreviousButton habe ich nicht hinbekommen, weil dann Fehlermeldung beim kompilieren
request for member ‚pressedFor‘ in ‚previousButton‘, which is of non-class type ‚void()‘
Dafür bin ich jetzt zu lange von C weg.
Ich bekomm es nicht hin. @Manuel. Hast du einen Tip für mich.
if (downButton.pressedFor(LONG_PRESS) &&
ignorePauseButton == false) {
if (activeModifier != NULL)
if (activeModifier->handlePause() == true)
return;
if (isPlaying()) {
uint8_t advertTrack;
if (myFolder->mode == 3 || myFolder->mode == 9) {
advertTrack = (queue[currentTrack - 1]);
}
else {
advertTrack = currentTrack;
}
// Spezialmodus Von-Bis für Album und Party gibt die Dateinummer relativ zur Startposition wieder
if (myFolder->mode == 8 || myFolder->mode == 9) {
advertTrack = advertTrack - myFolder->special + 1;
}