ich habe schon des öfteren meinen Fork hier im Forum verlinkt, jetzt würde ich ihn nochmal im Detail Präsentieren.
Dieser Fork ist nach und nach gewachsen und ich habe immer wenn ich einen sinnvollen Anstoß für eine Anpassung gefunden habe, diesen integriert.
Mir geht es darum die besten Funktionen (meiner bescheidenen Meinung nach) aus den ganzen Forks und Vorschlägen im Forum, in einer Software zusammen zu fügen.
Der Fork baut auf @Thorsten 's Software auf und enthält folgende funktionale Änderungen und Ergänzungen. Hier in einer kurzen Übersicht: (Detailbeschreibungen findet Ihr bei GitHub, die Dokumentation ist noch WIP)
Allgemeine Funktionen:
Es wurde ein Start- und Shut Down Sound eingefügt, der im mp3 Ordner abgelegt ist. Dafür wurde der Shortcut Nr. 3 entfernt. (über ein #define zu-/abwählbar)
Ausschalten der Box über einen längeren Druck (2s) der Pausetaste. Setzt einen Pollolu (oder ähnliches) voraus. (über ein #define zu-/abwählbar)
Um Programmspeicher für die neuen Funktionen frei zu geben, sind die Debugausgaben gekürzt worden und in englischer Sprache, sowie über ein #define zu-/abwählbar.
„Stopp wenn Karte weg“-Funktion, zu- und abschaltbar über das Adminmenü. Diese habe ich aus @mcgreg 's SW.
Hörbuchspeicher ist jetzt auf der Karte und nicht mehr auf dem EEPROM. So können beliebig viele Speicherplätze erstellt werden, indem man entsprechend viele Karten auf diesen Ordner konfiguriert.
Hörbuchfortschritte können auf andern Affenboxen weiter gehört werden. Der EEPROM wird geschont
Modifier können im EEPROM abgespeichert werden, damit sie bei einem Reset direkt wieder reaktiviert werden.
weiter Shortcuts, die mit der analgogen Tasterwereiterung oder der IR Fernbedienung ausgewählt werden können, siehe unten.
Neue Modis & Modifier:
Neuer Abspielmodi: Spezial Hörbuch von bis
Neue Spielemodifier: Puzzle, Quiz & Button Smash. Nähere Informationen dazu im Repository. + neuer Kartenvariante: Puzzleteil, welche für die Spiele Puzzle und Quiz gebraucht wird. Spiele: Puzzle, Quiz & Button Smash
Neuer Modifier: rechnen lernen. DieAffenbox stellt Rechenaufagaben, die man über die tasten lösen muss. Die komplexität ist konfigurierbar
Support eines Rotary Encoder KY 040 um die Lautstärke ein zu stellen. (über ein #define zu-/abwählbar). Adaptiert aus @Ullergr 's SW.
Support mehrerer Tasten über einen analogen Eingang. z.B.:
eines Drehschalters: Tonoino für die Kita - #24 von marco-117 oder des Leiterkartenpiraten Buttonboards oder eigens erstellten Tastererweiterungen. Für das Buttonboard ist eine Beispielkonfiguration vorhanden, ansonnsten kann eine eigene erstellt werden.
Support einer IR Fernbedienung
Das hier sind natürlich nur die Oberflächlichen Änderungen, im Code habe ich auch noch an eingien Stellen Veränderungen vorgenommen, diese erläutere ich aber hier nicht im Detail. Mich kann aber jeder gerne dazu ausfragen.
Die Funktionen sind von @kobayashi_maru und mir zu großen Teilen getestet worden.
Nochmals Danke dafür!
Aber als 100% stabil würde ich den Fork noch nicht beschreiben, deshalb freue ich mich über jede Fehlermeldung die ihr mir zukommen lasst!
Ich habe auch noch einige große Erweiterung offen:
integration einer Steuerung über ein Impulswahltelefon
Die Möglichkeit eine Karte mit einer „B“ Seite zu versehen. Die B Seite soll per Button oder per erkennung eines Tasters( spezielle Kartenform) ausgewählt werden
integration eines Neopixelmoduls
Ich hoffe der ein oder andere probiert meinen Fork mal aus und berichtet.
Grüße Marco
In meinem Fork gab es Fehler beim Erstellen von neuen Karten, sowie Fehler bei den von bis Modis.
Die von bis Grenzen wurden nicht richtig eingehalten.
Um transparent fest zu halten, welche Funktionen validiert sind, habe ich ein Testprotokol angefügt.
Hier kann man nachvollziehen, welche Funktionen von mir bereits getestet sind und welche nicht.
Ich habe meinen Fork jetzt zu ca. 95% getestet und nahezu alle Bugs behoben.
Es gibt noch ein paar sehr spezielle Fehler, die im normalen Betrieb nicht weiter auffallen sollten.
Vor ein paar Minuten hab ich die Version aktualisiert.
vielleicht kannst du mir weiterhelfen bei deinem Fork, den ich sehr interessant finde & gerne ausprobieren würde.
Also lade ich deinen Fork runter, tausche die mp3 gegen meine aus (nutze die 2.1 DEV von Thorsten) und lade die im Tonuino Ordner befindliche Ino Datei - den advert Ordner lasse ich unberührt.
Die im Ordner Specials befindliche TonUINO_ShortCutButtons Ino ist ja was anderes richtig ? Auch die im Specials Ordner befindlichen 3 mp3 Files gehören dann auch zum Shortcut Fork ?
Da Kompilieren klappt
Der Sketch verwendet 26282 Bytes (85%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes. Globale Variablen verwenden 1174 Bytes (57%) des dynamischen Speichers, 874 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.
Auch das hochladen. Bekomme folgende Debug Ausgabe:
Allerdings beim auflegen oder drücken der Taster, kommt nicht’s in der Ausgabe.
07:51:42.994 → ]⸮I\T]ox⸮⸮⸮Aê⸮iPV-i3⸮TonUINO Version 2.1
07:51:44.353 → created by Thorsten Voß and licensed under GNU/GPL.
07:51:44.353 → Information and contribution at https://tonuino.de.
07:51:44.353 →
07:51:44.387 → Fork by Marco Schulz
07:51:46.367 → load settings from flash
07:51:46.367 → Version: 2
07:51:46.367 → Max Vol: 25
07:51:46.367 → Min Vole: 5
07:51:46.367 → Init Vol: 15
07:51:46.367 → EQ: 1
07:51:46.367 → Locked: 0
07:51:46.367 → Sleep Timer: 0
07:51:46.367 → Inverted Vol Buttons: 1
07:51:46.367 → Admin Menu locked: 1
07:51:46.367 → Admin Menu Pin: 11255255
07:51:46.367 → Saved Modifier Mode: 255
07:51:46.400 → set modifier: 255
Nur beim auflegen einer Karte, oder versuchen ins Admin mit den Buttons zu gelangen passiert gar nichts … Auch am Arduino leuchtet nur Grün, ich erinnere mich das sonst beim Auflegen einer Karte die rote LED leuchtet. Ich nutze nur 3 Tasten
Ich hab dann auch mal meinen advert Ordner mit deinem ausgetauscht, ohne erfolg. Ich habe //#define DEBUG_QUEUE und #define DEBUG unkommentiert,
Das hat schon mal geklappt… Vielen Dank dafür. Ich kann Karten spielen und komme in’s Admin Menü:
09:16:10.654 -> TonUINO Version 2.1 09:16:10.654 -> created by Thorsten Voß and licensed under GNU/GPL. 09:16:10.654 -> Information and contribution at https://tonuino.de. 09:16:10.654 -> 09:16:10.687 -> Fork by Marco Schulz 09:16:12.668 -> load settings from flash 09:16:12.668 -> Version: 2 09:16:12.668 -> Max Vol: 25 09:16:12.668 -> Min Vole: 1 09:16:12.668 -> Init Vol: 1 09:16:12.668 -> EQ: 1 09:16:12.668 -> Locked: 0 09:16:12.668 -> Sleep Timer: 0 09:16:12.668 -> Inverted Vol Buttons: 1 09:16:12.702 -> Admin Menu locked: 0 09:16:12.702 -> Admin Menu Pin: 1111 09:16:12.702 -> Saved Modifier Mode: 0 09:16:12.702 -> set standby timer
Ich hatte dann im Anschluss eine Fehlermeldung, die aber mit dem neu befallen des mp3 Ordners anscheinend erledigt ist: 09:22:01.125 -> packet header error
Jetzt bekomme ich noch die Meldung 09:42:08.923 -> write settings to flash 09:42:08.923 -> set standby timer 09:42:08.960 -> milis: 0 09:42:08.960 -> cant read card
Das könnte mit der „Pause wenn Karte weg“ Funktion zusammenhängen, dann wäre es kein Fehler. Eventuell muss ich die Debugausgaben an der Stelle verbessern.
Muss ich mir bei Gelegenheit nochmal ansehen.
@marco-117: Hallo Marco, ich bin gerade dabei für meinen Sohn einen TonUINO zu bauen. Habe bereits diverse Firmwares probiert und deine Version hat so ziemlich alles was ich in dem TonUINO aufbauen und haben möchte. Vielen Dank an dieser Stelle dafür.
Ich habe allerdings ein Problem beim Abspielen des letzten Songs eines Ordners festgestellt. Danach stoppt nicht die Wiedergabe, sondern der letzte Song wird nochmal wiederholt und danach erst stoppt die Wiedergabe. Nach dem Standby-Timeout wird der Shutdown-Track abgespielt, doch das System fährt nicht runter. Stattdessen wir der letzte Song in Dauerschleife abgespielt. Ich nutze die Funktion „Pause wenn Karte weg“. Wenn ich die Karte dann wegnehme, Spielt der Song weiter. Das System reagiert dabei auch nicht mehr auf Tastenbetätigungen. Wo und was müsste ich ändern um dieses Verhalten zu ändern bzw anzupassen?
Ich hoffe ich habe mein Problem genau genug schildern können. Wenn ich noch was tun soll, sag mir bitte Bescheid.
Hab den geänderten Code eben getestet. Musste vorher noch eine Anpassung durchführen, welche den Pin 5 des Arduino zur Impulsbelastung der Powerbank benutzt, damit die Powerbank nicht automatisch aus geht. Dieser Code sollte allerdings keinen Einfluss auf das Verhalten haben. Sonst ist alles original von dir.
Nun deine Änderung was den Shutdown angeht funktioniert (nicht immer). Wenn die Karte draufbleibt, spielt das System den letzten Song noch einmal ab, allerdings ist das System hierbei stummgestellt (der DFPlayer leutet blau, also spelt er was ab). Danach läuft der Schutdowntimer und das System fährt runter. Hierbei wird das Shutdowngeräusch nicht wiedergegeben (vermutlich nicht, da der Speaker stumm gestellt ist).
Nehme ich allerdingst während der Shutdowntimer läuft die Karte weg und leg sie wieder drauf, wird das letze Lied nochmal abgespielt (man hört es), danach fährt das System nicht mehr in den Standby runter, obwohl nichts abgespielt wird.
An welchen Stellen könnte ich im Code schauen um das anzupassen? Oder ist es zu umfangreich um das auf Anhieb zu verstehen (bin zwar ein absoluter Anfänger, lerne aber schnell)?
Hat etwas gedauert aber ich konnt mich leider nicht früher um das Problem kümmern.
Ich habe das Problem gefunden. Es wurde die nextTrack Methode nicht richtig abgebrochen, nachdem der letzte Track erkannt wurde.
Hallo Marco, vielen Dank für deine Unterstützung. Das ist echt super! Ich teste die upgedatete Version. Sollte ich weiter Probleme haben, melde ich mich. Danke dir nochmal!
@marco-117 Hab es nun endlich geschafft die Version zu testen. Hab irgendwie nur noch Probleme mit der Firmware. Komme nicht mehr ins Admin Menü und die Tracks werden auch nicht mehr vernünftig abgespielt. Hier funktioniert die Methode Pause wenn Karte weg irgendwie nicht sauber. Hab das EEPROM auch schon mehrmals gelöscht und mehrmals die Firmware aufgespielt, ohne Erfolg.
Das Seltsame ist, dass die alte Firmware auch nicht mehr so läuft wie am Anfang. Ich verstehe das nicht so richtig. Bin deshalb zurück zu einer anderen Firmware gewechselt. Ich danke dir trotzdem vielmals für deine Unterstützung!
Es kann sein, dass meine Ergänzungen deines Codes was durcheinander gebracht haben. Ich werde morgen die „nackte“, unveränderte Version von dir mit den aktivierten Features, die ich benötige, testen.
Ich berichte sobald ich neue Erkenntnisse habe.
Gruß
///////// uncomment the below line to enable the function ////////////////
//#define FIVEBUTTONS
#define DEBUG
//#define DEBUG_QUEUE
#define PUSH_ON_OFF
#define STARTUP_SOUND
#define SPEAKER_SWITCH
//#define ROTARY_ENCODER
//#define ROTARY_SWITCH
#define POWER_ON_LED
//////////////////////////////////////////////////////////////////////////
Ich benutze eine Platine nach dem Standard-Schaltplan von Thorsten. Zusätzlich habe ich, angelehnt an deine Firmware, die Mosfet Schaltung für den Speaker Switch drin (an Pin D8). Weiterhin benutze ich einen Pololu Switch LV zum Einschalten über den Play Button. Eine weitere Schaltung um die Auto-Off Funktion der Powerbank auszuhebeln benutzt den Pin D5 (wäre aber hier erstmal außer Funktion). Und schließlich sind noch zwei LEDs für AN/AUS Anzeige (Pin D6) drin.
… Ach so, und ich benutze die Funktion „Pause wenn Karte weg“.