danke für die Antwort, ich muss bei der neuen Version noch etwas durchsteigen. Hatte nur im Thread nach der Funktion gesucht, weil ich die vermisst habe. Habe vor Jahren zwei Boxen mit der 2.1er Version gebaut und jetzt noch mal eine Box, wo ich die neue Firmware über den webuploader TonUINO - Die DIY Musikbox (nicht nur) für Kinder
installiert habe.
Hm, hatte allerdings vorher auch mal die 2.1er draufgespielt, vielleicht war das ein Fehler. Die Audio Dateien habe ich eigentlich ausgetauscht, aber eventuell habe ich da doch die falschen Dateien kopiert oder ich hätte die sd Karte formatieren müssen.
Ich hänge den tonuino heute Abend mal an den debugger.
War natürlich mein Fehler… Beim spielen habe ich tatsächlich die falschen mp3s von der 2.1er Variante verwendet. Mit den richtigen mp3s gibt es auch die von dir genannte Auswahl.
Ich habe die Funktion jetzt ausprobiert. Im laufenden Betrieb funktioniert der shortcut. Aber nach einem Neustart nicht mehr. Ist das so korrekt? Von der Funktion hatte ich mir erhofft, dass quasi auch ein Kaltstart ohne Karte möglich ist und dann eben das zuletzt gehörte wieder anfängt.
Das wird ohne eigene Anpassungen wohl nichts.
Der Arduino speichert die letzte Karte im RAM, also im Kurzzeitgedächtnis, möchtest du etwas über den Stromausfall hinweg speichern, gehört das in den EEPROM, dieser wird aber schon recht umfangreich benutzt.
Ah, alles klar. Dann muss ich eher mal schauen, ob ich meinen damaligen Sketch noch zum laufen bringen kann, da hatte ich das auf jeden Fall drin. Mit dem neuen Code komme ich nicht mehr zurecht, da komme ich über die Standard Version nicht hinaus.
Sorry, hatte nicht vorher Zeit, da ich am 3x3 Button Board gearbeitet hatte.
Hier ist nun mein Vorschlag zur Änderung im Code für die Regelung der Lautstärker per Poti.
Ist nicht ganz optimal, aber ich wollte die Änderungen nicht überall verteilen, sondern an einer Stelle haben.
In src/tonuino.hpp in der private Section der Klasse Tonuino (am besten nach der Funktion specialCard()) folgendes einfügen:
Ich habe mir noch mal den code angeschaut und versucht zu verstehen.
Mit der Adresse bräuchte ich noch Hilfe, die Adressen 0 bis 137 konnte ich bisher nicht im code gar nicht nachvollziehen. Muss ich ja evtl. auch nicht :). Würde es prinzipiell ausreichen anstelle von einfach eine 138 zu schreiben? Oder muss ich erst eine Variable definieren z.B.
int eelastcard = 138;
und dann eelastcard anstelle von schreiben?
Das habe ich mich vor langer Zeit auch mal gefragt, ich denke das wird im 3.1 ähnlich sein, unabhängig davon wo es im Code steht
Unter diesen Umständen würde ich dann nicht gleich die 138 nehmen, sondern etwas Platz lassen oder am saubersten, die Struktur um deine Wünsche erweitern.
Edit : du kannst auch den EEPROM ab Byte 90 belegen wenn du dann darauf achtest diese Ordner nicht als Hörbücher zu verwenden
Die Adressen 0-99 werden für den Fortschritt für die Hörbücher verwendet. Die Adressen 100-137 werden für die Admin-Settings verwendet, da struct Settings genau 38 Bytes benötigt. Ich würde dann vielleicht die 150 nehmen. In die struct Settings würde ich es nicht integrieren, da du dann Probleme hast, wenn diese in der offiziellen Version erweitert wird. Außerdem würde man dann bei jedem Karte Auflegen die kompletten Settings neu schreiben.
Wenn du die Konstante vor die Funktion setCard() schreiben möchtest, würde ich folgendes schreiben: static constexpr uint8_t eelastcard = 150;
schreiben, dann braucht das keinen RAM.
Habe die TNG Mal auf dem AIO+ getestet. Funktioniert soweit ganz gut.
Ist es irgendwie möglich die Änderung der Lautstärke bei Verwendung von 3 Buttons zu beschleunigen? Wenn man die Lautstärketaste gedrückt hält, dauert es gefühlt eine Ewigkeit bis man die gewünschte Lautstärke erreicht hat.
Was noch super wäre:
Möglichkeit die Empfindlichkeit des NFC Readers
einzustellen
Integration einer Status LED über einen freien Pin
(ähnlich wie im Affenbox Fork mit Fadingoption)
Ich würde auch gerne einen Poti (KY040) verwenden, aber am AiO Plus. So wirklich funktionieren tut es aber nicht, wenn ich den DT des Poti auf den Pin lege springt der Poti mir nur zwischen Lautstärke 5 und 25 Kann mir jemand einen Tipp geben?
Wahrscheinlich nur ein Tipp- oder Bezeichnungsfehler, vielleicht aber auch Grund für einen Fehler…
der KY404 ist kein?Potentiometer, sondern ein Drehgeber.
Dem Wunsch schließe ich mich an. Am besten und flexibelsten wäre es über adressierbare LEDs, also Neopixel, WS2812b und Konsoren.
Aktuell gibt es hauptsächlich den Affenbox-Fork mit direkter Versorgung der LED über WS mit Pulsieren bei Pause durch PWM oder den Always-Quene-Fork mit Pixelring (aber mir persönlich zu wilder Animation).
Cool wäre ein Zwischending, also z.B. eine entspanntere Ring-Animation oder eine einzelne LED (also Ring/Stripe mit n=1 LEDs), die unterschiedliche Zustände anzeigen kann.
Dafür könnte man zum Beispiel eine solche Zuordnung treffen:
Tonuino startet und ist noch nicht bereit, eine Karte aufzulegen: rotes Pulsieren/Drehen bzw. bei Einzel-LED wechelnder Übergang rot/weiß
Tonuino ist hochgefahren und bereit für eine Karte: grünes Pulsieren bzw. wechelnder Übergang grün/weiß
Pause: blaues Pulsieren bzw. wechelnder Übergang blau/weiß
Tonuino spielt ab: bunter Farbwechsel; insbesondere bei Ring oder Stripe nicht zu wild, eher ganzen Ring in einer Farbe und beginnend von LED1 dann neue Farbe bis alle in der neuen Farbe sind und dann weiter mit der nächsten Farbe; beim Stripe evtl eine Farbe hin, nächste Farbe zurück
nur bei Ring oder Stripe: Lautstärke wird im Verhältnis (VolMax - VolMin / Anzahl LEDs) angezeigt, ggf. in rot wenn leiser gestellt wird und in grün wenn lauter gestellt wird
Defines für Typ (Ring oder Stripe), Anzahl LEDs, Offset für gedreht eingebaute Ringe, ggf. Animationsgeschwindigkeit
Wenn ich ein bisschen Luft mit meinen Gehäuse-Änderungen und Ideen hab, wollte ich mich selbst mal in die Programmierung der adressierbaren LEDs einfuchsen, mit dem Ziel das in den Affenbox-Fork zu integrieren. Weil hier aber scheinbar grade viel Motivation und vor allem mehr Kompetenz zugange ist, versuche ich es mal auf dem Weg.