Coder Social home page Coder Social logo

xfjx / tonuino Goto Github PK

View Code? Open in Web Editor NEW
442.0 76.0 401.0 89 MB

Die DIY Musikbox (nicht nur) für Kinder

Home Page: https://www.voss.earth/tonuino/

License: GNU General Public License v3.0

C++ 79.55% Shell 0.61% Python 19.84%
arduino mp3 jukebox music-player rfid diy kinder

tonuino's Introduction

Veraltetes TonUINO Repository (Nicht mehr aktiv)

Hinweis: Die Entwicklung dieses Repositories wurde eingestellt, und ich arbeite aus persönlichen Gründen, wie z.B. Zeitmangel, nicht mehr daran. Die Community hat die Weiterentwicklung im neuen Repository übernommen. Bitte besuche das neue Repository für aktuelle Verbesserungen und Updates: TonUINO-TNG

Neue Entwicklungen

Das neue Repository TonUINO-TNG enthält zahlreiche Verbesserungen, Aktualisierungen und neue Funktionen, die von engagierten Mitgliedern der Community entwickelt wurden. Du bist herzlich eingeladen, dich dem neuen Repository anzuschließen, um von den aktuellen Fortschritten zu profitieren.

Wie kannst du beitragen?

Falls du Interesse daran hast, zur Weiterentwicklung des TonUINO-Projekts beizutragen, bist du herzlich eingeladen, dich am neuen Repository zu beteiligen. Dort kannst du Pull Requests einreichen, Issues melden, an Diskussionen teilnehmen und gemeinsam mit anderen Enthusiasten an der Zukunft des Projekts arbeiten.

Aktualisierung empfohlen

Um sicherzustellen, dass du von den neuesten Entwicklungen und Verbesserungen profitierst, wird dringend empfohlen, deine Aktivitäten und Beiträge zum TonUINO-Projekt ins neue Repository TonUINO-TNG zu verlagern.

Ich danke dir für deine bisherige Unterstützung und freue mich darauf, dich im neuen Repository begrüßen zu dürfen!

Hinweis: Diese README dient lediglich zu Informationszwecken und wird nicht mehr aktiv aktualisiert.


Deprecated TonUINO Repository (No longer active)

Note: Development on this repository has been discontinued, and I am no longer actively working on it due to personal reasons, such as time constraints. The community has taken over further development in the new repository. Please visit the new repository for the latest improvements and updates: TonUINO-TNG

New Developments

The new repository TonUINO-TNG contains numerous enhancements, updates, and new features developed by dedicated community members. You are invited to join the new repository to benefit from the latest advancements.

How You Can Contribute

If you are interested in contributing to the advancement of the TonUINO project, you are welcome to participate in the new repository. There, you can submit pull requests, report issues, engage in discussions, and collaborate with fellow enthusiasts on shaping the project's future.

Recommended Update

To ensure that you benefit from the latest developments and improvements, it is strongly recommended to shift your activities and contributions related to the TonUINO project to the new repository TonUINO-TNG.

I appreciate your past support and look forward to welcoming you to the new repository!

Note: This README is provided for informational purposes only and will no longer be actively updated.

tonuino's People

Contributors

gutelaune avatar hvdh2 avatar mhioz avatar oeddn avatar rocco avatar seisfeld avatar til-schneider avatar xfjx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tonuino's Issues

Platformio meldet folgende Fehler für die Dev

Hi.

PlatformIO ist die Dev-Ebene meiner Wahl. Ist jemand in der Lage, die Dev so zu programmieren, dass folgende Fehler nicht mehr beim kompilieren erscheinen? PlatformIO Code dürfte ja auch bei der Arduino IDE klappen, welche ja eher Fehler ausbügelt/ignoriert, PlatformIO aber nicht.

Compiling .pio\build\nanoatmega328\src\main.cpp.o
src\main.cpp: In member function 'virtual void SleepTimer::loop()':
src\main.cpp:277:25: error: 'setstandbyTimer' was not declared in this scope
setstandbyTimer();
^
src\main.cpp:279:16: warning: deleting object of polymorphic class type 'SleepTimer' which has non-virtual destructor might cause undefined behaviour [-Wdelete-non-virtual-dtor]
delete this;
^
src\main.cpp: In member function 'virtual bool KindergardenMode::handleNext()':
src\main.cpp:422:20: error: 'playFolder' was not declared in this scope
playFolder();
^
src\main.cpp: In function 'void nextTrack(uint16_t)':
src\main.cpp:534:21: error: 'setstandbyTimer' was not declared in this scope
setstandbyTimer();
^
src\main.cpp:545:23: error: 'setstandbyTimer' was not declared in this scope
setstandbyTimer();
^
src\main.cpp:566:21: error: 'setstandbyTimer' was not declared in this scope
setstandbyTimer();
^
src\main.cpp:581:23: error: 'setstandbyTimer' was not declared in this scope
setstandbyTimer();
^
src\main.cpp: In function 'void waitForTrackToFinish()':
src\main.cpp:714:37: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
} while (!isPlaying() && millis() < currentTime + TIMEOUT);
^
src\main.cpp: In function 'void setup()':
src\main.cpp:758:27: warning: invalid conversion from 'int' to 'DfMp3_Eq' [-fpermissive]
mp3.setEq(mySettings.eq - 1);
^
In file included from src\main.cpp:3:0:
.pio\libdeps\nanoatmega328\DFPlayer Mini Mp3 by Makuna\src/DFMiniMp3.h:198:10: note: initializing argument 1 of 'void DFMiniMp3<T_SERIAL_METHOD, T_NOTIFICATION_METHOD>::setEq(DfMp3_Eq) [with T_SERIAL_METHOD = SoftwareSerial; T_NOTIFICATION_METHOD = Mp3Notify]'
void setEq(DfMp3_Eq eq)
^
src\main.cpp:786:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i = 0; i < EEPROM.length(); i++) {
^
src\main.cpp:794:17: error: 'playShortCut' was not declared in this scope
playShortCut(3);
^
src\main.cpp: In function 'void loop()':
src\main.cpp:977:10: warning: suggest explicit braces to avoid ambiguous 'else' [-Wparentheses]
if (ignorePauseButton == false)
^
src\main.cpp:1028:10: warning: suggest explicit braces to avoid ambiguous 'else' [-Wparentheses]
if (!ignoreUpButton)
^
src\main.cpp:1100:23: error: 'readCard' was not declared in this scope
if (readCard(&myCard) == true) {
^
src\main.cpp:1110:17: error: 'setupCard' was not declared in this scope
setupCard();
^
src\main.cpp: In function 'void adminMenu(bool)':
src\main.cpp:1117:37: warning: default argument given for parameter 1 of 'void adminMenu(bool)' [-fpermissive]
void adminMenu(bool fromCard = false) {
^
src\main.cpp:82:6: note: previous specification in 'void adminMenu(bool)' here
void adminMenu(bool fromCard = false);
^
src\main.cpp: In function 'void adminMenu(bool)':
src\main.cpp:1131:22: error: 'askCode' was not declared in this scope
if (askCode(pin) == true) {
^
src\main.cpp:1173:15: error: 'resetCard' was not declared in this scope
resetCard();
^
src\main.cpp:1192:29: warning: invalid conversion from 'int' to 'DfMp3_Eq' [-fpermissive]
mp3.setEq(mySettings.eq - 1);
^
In file included from src\main.cpp:3:0:
.pio\libdeps\nanoatmega328\DFPlayer Mini Mp3 by Makuna\src/DFMiniMp3.h:198:10: note: initializing argument 1 of 'void DFMiniMp3<T_SERIAL_METHOD, T_NOTIFICATION_METHOD>::setEq(DfMp3_Eq) [with T_SERIAL_METHOD = SoftwareSerial; T_NOTIFICATION_METHOD = Mp3Notify]'
void setEq(DfMp3_Eq eq)
^
src\main.cpp:1236:52: error: 'setupFolder' was not declared in this scope
setupFolder(&mySettings.shortCuts[shortcut - 1]);
^
src\main.cpp:1300:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i = 0; i < EEPROM.length(); i++) {
^
src\main.cpp:1318:22: error: 'askCode' was not declared in this scope
if (askCode(pin)) {
^
src\main.cpp: In function 'uint8_t voiceMenu(int, int, int, bool, int, int, bool)':
src\main.cpp:1349:120: warning: default argument given for parameter 4 of 'uint8_t voiceMenu(int, int, int, bool, int, int, bool)' [-fpermissive]
bool preview = false, int previewFromFolder = 0, int defaultValue = 0, bool exitWithLongPress = false) {
^
src\main.cpp:76:9: note: previous specification in 'uint8_t voiceMenu(int, int, int, bool, int, int, bool)' here
uint8_t voiceMenu(int numberOfOptions, int startMessage, int messageOffset,
^
src\main.cpp:1349:120: warning: default argument given for parameter 5 of 'uint8_t voiceMenu(int, int, int, bool, int, int, bool)' [-fpermissive]
bool preview = false, int previewFromFolder = 0, int defaultValue = 0, bool exitWithLongPress = false) {
^
src\main.cpp:76:9: note: previous specification in 'uint8_t voiceMenu(int, int, int, bool, int, int, bool)' here
uint8_t voiceMenu(int numberOfOptions, int startMessage, int messageOffset,
^
src\main.cpp:1349:120: warning: default argument given for parameter 6 of 'uint8_t voiceMenu(int, int, int, bool, int, int, bool)' [-fpermissive]
bool preview = false, int previewFromFolder = 0, int defaultValue = 0, bool exitWithLongPress = false) {
^
src\main.cpp:76:9: note: previous specification in 'uint8_t voiceMenu(int, int, int, bool, int, int, bool)' here
uint8_t voiceMenu(int numberOfOptions, int startMessage, int messageOffset,
^
src\main.cpp:1349:120: warning: default argument given for parameter 7 of 'uint8_t voiceMenu(int, int, int, bool, int, int, bool)' [-fpermissive]
bool preview = false, int previewFromFolder = 0, int defaultValue = 0, bool exitWithLongPress = false) {
^
src\main.cpp:76:9: note: previous specification in 'uint8_t voiceMenu(int, int, int, bool, int, int, bool)' here
uint8_t voiceMenu(int numberOfOptions, int startMessage, int messageOffset,
^
src\main.cpp: In function 'void resetCard()':
src\main.cpp:1466:13: error: 'setupCard' was not declared in this scope
setupCard();
^
src\main.cpp: In function 'void writeCard(nfcTagObject)':
src\main.cpp:1710:8: warning: unused variable 'size' [-Wunused-variable]
byte size = sizeof(buffer);
^
*** [.pio\build\nanoatmega328\src\main.cpp.o] Error 1

'class EEPROMClass' has no member named 'put'

Hallo zusammen,

leider bekomme ich beim Überprüfen/Komplimieren die Fehlermeldung:

'class EEPROMClass' has no member named 'put'

Hat jemand eine Idee wie ich das Problem fixen kann?

Vielen Dank im Voraus.

Hörspielmodus neuer Track

So wie ich es sehe, kann man im Hörspielmodus nicht einen anderen Track auswählen. Die Weitertaste hat die gleiche Funktion wie die Pause-Taste.
Muss/kann ich den Code so ändern, um ein anderen Track zu wählen?
Anstatt:

if (myCard.mode == 1) { Serial.println(F("Hörspielmodus ist aktiv -> Strom sparen")); mp3.sleep();

Änderung:
if (myCard.mode == 1) { track = random(1, numTracksInFolder + 1); Serial.println(F("Hörspielmodus ist aktiv -> zufälligen Track spielen:")); Serial.println(track); mp3.playFolderTrack(myCard.folder, track); }

Reise nach Jerusalem

Ich finde die Idee mit dem Stoptanz genial. Wäre es möglich, auch das Spiel "Reise nach Jerusalem" zu implementieren (https://de.wikipedia.org/wiki/Reise_nach_Jerusalem)?

Da müsste wie beim Stoptanz das Playback zufällig pausiert werden (allerdings mit einer höheren Mindestzeit zwischen Pausen, vielleicht 15 sec) und pausieren bis der Spielleiter das Playback wieder weiter schaltet, z.B. über einen Druck auf Play oder durch eine Karte.

Stumm nach triggern des Adminmenü trotz Sperre

Wenn das Adminmenü nur mit Karte zugänglich ist und die 3 Taster gedrückt werden, verstummt der TonUINO und die Wiedergabe lässt dich nur durch vorhalten der Karte erneuert starten.

Zurückspulen im Partymodus von-bis von Track 1 keine Wiedergabe

Spielt man etwas im Partymodus von-bis und der special-Wert (von) ist nicht 1, gibt es einen Fehler beim Zurückspulen. Sobald man das vordere Ende der Queue erreicht, schlägt das Track zurück fehl. Hier wird currentTrack auf special2 gesetzt. Die Queue geht allerdings nur von 1 bis special2 - special + 1. Deshalb wird eine 0 übergeben und nichts abgespielt.

Beispiel: Partymodus von 13 (special) bis 15 (special2)
Queue:
1 14
2 15
3 13
4 0
5 0

versucht man jetzt von Track 1 rückwärtszuspringen, wird currentTrack auf 15 gesetzt. Richtig wäre aber 3

Unterstützung für RFID RDM6300

Hallo Thorsten,

sehr starkes Projekt. Ich hatte mich selbst an so einem Projekt mal versucht, aber bin an der Logik nicht weiter gekommen (Arduino RFID Jukebox.
Derzeit habe ich mir eine Phoniebox gebastelt, bin damit zufrieden bis auf die Tatsache, dass ein RPi einen höheren Stromverbrauch hat und ein plötzliches ausschalten ungünstig sein kann.

Da ich für die Phoniebox andere RFID Karten nutze (125 kHz) als du (13.56 MHz), wollte ich fragen ob es möglich ist eine Unterstützung für das RDM6300 Modul einzubauen?

Ich freue mich auf deine Antwort!

Initialisierungszeit von DFPlayer Mini zu kurz --> InitVolume wird ignoriert

Im aktuellen Dev-Build ist in Zeile 755 die Aufstartzeit mit delay(2000) hinterlegt.
Bei meinem (Aliexpress) DFPlayer Modul reichte diese Zeit nicht aus um vollständig bereit zu sein.
Im Effekt wurde der InitVolume-Wert nicht übernommen und die Lautstärke war zu hoch.

Abhilfe brachte bei mir einfach den Delay auf 3000ms zu erhöhen.

Ggf. sollte hier der Default geändert werden oder noch besser - falls möglich - blockierend gewartet werden und geprüft werden ob der Player bereit ist.

Anzahl Titel im Ordner nicht erkannt

Hallo,
ich habe eine Karte angelernt für den Hörbuchmodus und eine Karte für den Hörspielmodus.
Wenn ich nun die Hörbuchkarte Karte einlese wird im Serial-Monitor angezeigt:
Com Error 255
0 Dateien in Ordner 1
Und fängt an zuspielen, hört aber nach dem Track auf und spielt nicht den nächsten Track.
Mit den Tasten Up/Down komme ich aber weiter/zurück.

Wenn ich die Hörspielkarte einlese wird im Serial-Monitor angezeigt:
Com Error 255
0 Dateien in Ordner 1
Und es wird immer nur die erste Datei abgespielt.

Offensichtlich gibt es Probleme beim Ermitteln der Tracks im Ordner.

Eine Idee was die Ursache sein könnte?

Danke!

website should work without allowing google

image

currently the website https://tonuino.de/ is not usable if google fonts is not allowed. could be easily solved by adding link tags to the icon text

<dt><a href="https://voss.earth/tonuino"><i class="fas fa-file-alt fa-5x"></i></a></dt>
<dd>Anleitung</dd>

->

<dt><a href="https://voss.earth/tonuino"><i class="fas fa-file-alt fa-5x"></i></a></dt>
<dd><a href="https://voss.earth/tonuino">Anleitung</a></dd>

as google uses this domain for tracking it could also be a possible problem with the DSGVO

Dev playshortcuts 3, geht nicht nach upload

Der shortcut 3 funktioniert erst, nachdem man ihn per Menü zugewiesen hat. Ansonsten kommt shortcut not configured. Aber, man kann ja Ordner vorher schon zuweisen, indem man bei shortcut 3 die Null entfernt, trotzdem geht es nicht. Erst nach Zuweisung per Menü.

Ist das so gewollt?

TonUINO Always queue anpassung an AiO Platine

Hier ist der Code für die Anpassung meiner Software Always Queue max Ausstattung an die neue AiO Platine.
Der Code ist sowohl auf der klassischen Tonuino-Struktur aus Einzelkomponenten als auch auf der AiO Platine lauffähig. In den Defines am Anfang des scetches müssen die Anpassungen an die Hardware vorgenommen werden. Im Code ist am Anfang eine umfangreiche Beschreibung der Features und der möglichen Einstellungen enthalten. Im angefügten Zip file sind enthalten:
Der Code in verschiedenen Vorkonfigurationen
Die Ordner advert und mp3 angepasst an die veränderten und erweiterten Adminfunktionen.

Achtung! Bei Verwendung des Codes auf dem TonUINO Klassik die Konfiguration der Pins an die vorhandene Beschaltung anpassen.

2020-12-28-AiO-Anpassung-Vordefiniert.zip

Standby-Timer disabled nach Abbruch des Adminmenüs

Am Anfang von adminMenu() wird disablestandbyTimer() aufgerufen.
Das zugehörige Gegenstück setstandbyTimer() wird aber nur aufgerufen, wenn eine Änderung gemacht wurde und deswegen gespeichert wird.
Alle anderen Stellen, an denen die Funktion verlassen wird, rufen setstandbyTimer() nicht auf.
Damit bleibt dann der Tonuino eingeschaltet, bis der Akku leer ist...

Box spielt weiter obwohl Karte weg

Hallo,
ich habe die Box im Modus "Karte weg=Pause" eingestellt. So weit klappt da alles. Allerdings spielt die Box auch ohne Karte weiter, wenn man ein Lied weiter drückt....

Kling für mich jetzt nach nicht gewünscht. Wo kann ich so Bugs melden ?

Gruß
Georg

Com Error 6

Ich bekomme leider immer einen Com Error 6 angezeigt. Ich kann auch keine Karte beschreiben. Wo könnte der Fehler liegen?
Wäre es eigentlich möglich noch eine alte Version der Firmware zu bekommen? Würde gerne Chips/Tokens anstatt der Karten benutzen. Auf denen lassen sich jedoch leider keine Infos speichern. Das müsste dann im Eprom (wie in der alten Version) geschehen.

Kleiner Auszug aus der seriellen Ausgabe:
Card UID: D3 03 0D 03
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 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 0 0 0 ]

Reading data from block 4 ...
Data in block 4:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Neue Karte konfigurierenTrack beendet251
Track beendet1

Com Error 6
Track beendet1

Com Error 6
Track beendet2

Com Error 6
Track beendet3

Com Error 6
Track beendet4

Viele Grüße!!
Julian

Logo Design for TonUINO

Hi, my name is Zuur W. I'm a graphic designer and I'd like to collaborate on your open source project and propose free logo/icon design for your project. If it's something you're interested in, please, let me know!
Best Regards
Zuur

WHAT HAPPENED?

Why is everything gone?

Discourse page is down, leiterkartenpiraten shop is down, tonuino updater is down.

No message, nothing?!

Can not select an arbitrary file for shortcut(3)/Einzelmodus

Hi,

I want to have the welcome melody (shortcut(3) in "Einzelmodus") at folder 99, named 255.mp3.
This is the one and only file in that folder. unfortunately I can not select it. The announcement stucks at 1, incrementing doesn't work.

Is this the wanted behaviour? Must there be 253 files exist before?

Thanks in advance.

Regards, Thorsten

Mp3 TTS Dateien erzeugen mit "create-soundfiles.sh"

Ich suche für etwas ähnliches (Hausautomatisierung) die Möglichkeit viele Mp3 Ansagen per skript zu erzeugen, so wie es hier vermutlich mit der Datei "create-soundfiles.sh" gemacht wird.

Mich würde interssieren welche Programme benötigt werden um die Script Datei auszuführen.

Hörbuchmodus funktioniert im DEV branch nicht

Mit dem aktuellen DEV branch b99ca71 funktioniert der Hörbuchmodus nicht. Die Karte kann angelernt werden und es wird auch gespeichert, beim Auflegen der Karten im Hörbuchmodus erfolgt aber keine Wiedergabe. Im Albummodus klappt es.

Wenn etwas anderes läuft und man die Karte die im Hörbuchmodus programmiert wurde auflegt, stoppt die Wiedergabe des vorherigen Albums - es erfolgt aber kein Ton.

Software fork for CubieKid

Hallo Stephan,
ich arbeite gerade an einem Gehäuse https://github.com/jenshackel/CubieKid nebst angepasster TonUINO Hardware. Ich möchte gerne als Basis eine modifizierte Version deiner Software (IR-Funktion entfernt dafür Batterieüberwachung und Auto-Power-Off hinzugefügt) verwenden. Die ist deutlich übersichtlicher und besser dokumentiert als das Original, finde ich.

Mein CubieKid Projekt hat eine andere Lizensierung (CreativeCommons). Wie hättest Du gerne die Angaben für Copyrights und Lizenz deiner Software angegeben?

Vielleicht am besten per E-Mail weiter besprechen? db3jhf (at) darc.de

Viele Grüße,
Jens

10 Sekunden bis „Karte“ abgespielt wird

Hi,
Ich habe gerade eine neue Box mit der aktuellen Firmware bestückt. Beim Testen ist mir aufgefallen, dass die Box gut 10 sec. braucht bis sie Lieder spielt.
Eine ältere Box (mit FW 1.x) hatte das nicht. Da ging es ja sofort los.
Hast Du eine Idee woran das liegen könnte?

VG
Lennart

Fehlende disableStandbyTimer() aufrufe.

Hallo,

ich habe ein Fehler entdeckt.
Es ist möglich, wenn der Tonuino pausiert, über die up und down Buttons einen Track spielen zu lassen.
In Zeile 1024:
```
if (!ignoreUpButton)
if (!mySettings.invertVolumeButtons) {
nextButton();
}


und Zeile 1039:

else if (downButton.wasReleased()) {
if (!ignoreDownButton) {
if (!mySettings.invertVolumeButtons) {
previousButton();
}


Es wird nicht abgefragt ob ein Track läuft und über nextButton() und previousButton() wird nextTrack() und previousTrack() ausgeführt.
In beiden werden dann Tracks angespielt ohne das der Standby Timer deaktiviert wird.

Ich habe diese Schlussfolgerung hergeleitet und nicht getestet.

Grüße

Possible memory leak in function readCard

In function readCard is a possible memory leak, caused by removing of a modifier card.
When a modifier card is removed, only the activeModifier is set to null, but the memory is not freed.

TonUINO/Tonuino.ino

Lines 1635 to 1642 in 73b5681

if (tempCard.nfcFolderSettings.folder == 0) {
if (activeModifier != NULL) {
if (activeModifier->getActive() == tempCard.nfcFolderSettings.mode) {
activeModifier = NULL;
Serial.println(F("modifier removed"));
if (isPlaying()) {
mp3.playAdvertisement(261);
}

Should be fixed by using:
delete activeModifier;

Or the implementation of Modifier class could be changed to contain a destructor which gets called.

per knopfdruck zu nächstem oder vorherigem Ordner springen

Gibt es die Möglichkeit per knopfdruck zu nächstem oder vorherigem Ordner springen? Bzw, könnte das eingebaut werden? So könnte man Karten sparen, und z.B. die Ordner 10, 20,30,40 per Karte ansteuern, und die Ordner 10,11,12,13,14 etc. dann per Knopfdruck.

Party Mode Next Song buggy

Ich hab im Party Modus das Problem, dass öfter der Next-Button nicht funktioniert bzw. das Playback einfach angehalten wird. Wenn ich dann auf Play drücke wird der vorherige Song einfach neugestartet. Erst nach mehrmaligen drücken des Next-Buttons kommt irgendwann der nächste Song. Das passiert auch wenn die Box von selber den Track wechseln will. Soweit ich das sehe passiert das nur im Party Modus. Alle anderen Modi machen in der Hinsicht keine Probleme. Ich tippe mal auf ein Cue Problem?

sys | tracks: mp3 | error code 255

Beim Start der Firmware aus dem Communitiyordner "Seisfeld" erscheint im Terminal die Meldung:

sys | tracks: mp3 | error code 255
65520

Es werden keine Audiodateien abgespielt. Mir ist nicht klar ob es sich um einen Fehler im Programm oder (vermutlich wahrscheinlicher) in der Datei Struktur der SD Karte handelt.

Karten lassen sich nicht mehr beschreiben

Hallo Zusammen!

Ich habe es hinbekommen, 2 Karten zu beschreiben. Dann war aber auch leider Schluss. Er erkennt, dass es eine neue Karte ist, wenn ich aber den Verlauf durchgehe bricht die Box nach dem Modus ab und erkennt die Karte wieder als neu.

Ich kann auch leider keine Karte löschen (Start -> Pause-Taste gedrückthalten). Auch nicht alle auf einmal (Start -> alle Knöpfe gerückthalten). Die Ansagen kommen, es passiert aber leider nichts.

Ist vielleicht mein Nano defekt?

Hier mal der Monitor, wenn ich eine Karte neu beschreiben will:

TonUINO Version 2.0
(c) Thorsten Voß
Firmware Version: 0x92 = v2.0
Card UID: 69 D5 76 48
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 02 01 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 02 01 00 00 00 00 00 00 00 00 00

1 Dateien in Ordner 2
Hörspielmodus -> zufälligen Track wiedergeben
1
Card UID: 90 9E 8D 7C
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   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ] 

Reading data from block 4 ...
Data in block 4:
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Neue Karte konfigurierenTrack beendet1
Track beendet1
Track beendet2
Track beendet2
Track beendet3
Track beendet3
Authenticating again using key B...
Writing data into block 4 ...
 13 37 B3 47 01 03 01 00 00 00 00 00 00 00 00 00
MIFARE_Write() failed: A MIFARE PICC responded with NAK.

Card UID: 90 9E 8D 7C
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   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ] 

Reading data from block 4 ...
Data in block 4:
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Neue Karte konfigurierenTrack beendet251
Track beendet251

handleNext() des aktiven modifiers kann bei einem Liedwechsel mehrfach aufgerufen werden

OnPlayFinished kann bei einem track-Ende mehrfach aufgerufen werden. Der Code probiert sich dagegen zu schützen, indem verglichen wird, ob der beendete track gleich dem zuletzt beendeten track ist. Falls ja wird das event ignoriert.

Der Vergleich wird aber erst ausgeführt, nachdem handleNext des aktiven modifiers aufgerufen wurde. Dies wird also bei zwei events zu einem track-Ende zwei mal ausgeführt was zu unerwartetem Verhalten führt.

Rückwärtsspulen im Spezialmodus (Album)

Wenn man im Spezialmodus Von-Bis (mode 8) eine Karte z.B. bei Lied 10 startet und nach dem Auflegen zurück spult, kommt man zum vorherigen Lied im Ordner und damit zu einem anderem Album/einer anderen Karte. Ich hätte erwartet, dass in dem Fall das erste Lied der Karte (also im Beispiel Lied 10) wieder abgespielt wird.

Das gewünschte Verhalten bekommt man, wenn man in Zeile 917 (DEV-Branch) firstTrack = myFolder->special; setzt:

// Spezialmodus Von-Bis: Album: alle Dateien zwischen Start und Ende spielen
if (myFolder->mode == 8) {
   Serial.println(F("Spezialmodus Von-Bis: Album: alle Dateien zwischen Start- und Enddatei spielen"));
   Serial.print(myFolder->special);
   Serial.print(F(" bis "));
   Serial.println(myFolder->special2);
   numTracksInFolder = myFolder->special2;
   firstTrack = myFolder->special;
   currentTrack = myFolder->special;
   mp3.playFolderTrack(myFolder->folder, currentTrack);
 }

Fehler beim Kompilieren für das Board Arduino Nano....

Hab zwar die Barnosch vErsion, aber möglicherweise hat der Fehler nachts damit zu tun, deshalb traue ich mich hier zu fragen. Beim Kompilieren kommt folgender Fehler der sich scheinbar auf den DFPlayer bezieht.
`Arduino: 1.8.12 (Windows 10), Board: "Arduino Nano, ATmega328P (Old Bootloader)"

In file included from C:\Users\svenomat\Documents\Arduino\Tonuino_LEDRing_V21\Tonuino_LEDRing_V21.ino:7:0:

C:\Users\svenomat\Documents\Arduino\libraries\DFPlayer_Mini_Mp3_by_Makuna\src/DFMiniMp3.h: In instantiation of 'uint16_t DFMiniMp3<T_SERIAL_METHOD, T_NOTIFICATION_METHOD>::listenForReply(uint8_t) [with T_SERIAL_METHOD = SoftwareSerial; T_NOTIFICATION_METHOD = Mp3Notify; uint16_t = unsigned int; uint8_t = unsigned char]':

C:\Users\svenomat\Documents\Arduino\libraries\DFPlayer_Mini_Mp3_by_Makuna\src/DFMiniMp3.h:105:27: required from 'void DFMiniMp3<T_SERIAL_METHOD, T_NOTIFICATION_METHOD>::loop() [with T_SERIAL_METHOD = SoftwareSerial; T_NOTIFICATION_METHOD = Mp3Notify]'

C:\Users\svenomat\Documents\Arduino\Tonuino_LEDRing_V21\Tonuino_LEDRing_V21.ino:809:14: required from here

C:\Users\svenomat\Documents\Arduino\libraries\DFPlayer_Mini_Mp3_by_Makuna\src/DFMiniMp3.h:511:62: error: no matching function for call to 'Mp3Notify::OnPlayFinished(DfMp3_PlaySources, uint16_t&)'

                     T_NOTIFICATION_METHOD::OnPlayFinished(DfMp3_PlaySources_Usb, replyArg);

                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

C:\Users\svenomat\Documents\Arduino\Tonuino_LEDRing_V21\Tonuino_LEDRing_V21.ino:154:17: note: candidate: static void Mp3Notify::OnPlayFinished(uint16_t)

 static void OnPlayFinished(uint16_t track) {

             ^~~~~~~~~~~~~~

C:\Users\svenomat\Documents\Arduino\Tonuino_LEDRing_V21\Tonuino_LEDRing_V21.ino:154:17: note: candidate expects 1 argument, 2 provided

In file included from C:\Users\svenomat\Documents\Arduino\Tonuino_LEDRing_V21\Tonuino_LEDRing_V21.ino:7:0:

C:\Users\svenomat\Documents\Arduino\libraries\DFPlayer_Mini_Mp3_by_Makuna\src/DFMiniMp3.h:515:62: error: no matching function for call to 'Mp3Notify::OnPlayFinished(DfMp3_PlaySources, uint16_t&)'

                     T_NOTIFICATION_METHOD::OnPlayFinished(DfMp3_PlaySources_Sd, replyArg);

                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

C:\Users\svenomat\Documents\Arduino\Tonuino_LEDRing_V21\Tonuino_LEDRing_V21.ino:154:17: note: candidate: static void Mp3Notify::OnPlayFinished(uint16_t)

 static void OnPlayFinished(uint16_t track) {

             ^~~~~~~~~~~~~~

C:\Users\svenomat\Documents\Arduino\Tonuino_LEDRing_V21\Tonuino_LEDRing_V21.ino:154:17: note: candidate expects 1 argument, 2 provided

In file included from C:\Users\svenomat\Documents\Arduino\Tonuino_LEDRing_V21\Tonuino_LEDRing_V21.ino:7:0:

C:\Users\svenomat\Documents\Arduino\libraries\DFPlayer_Mini_Mp3_by_Makuna\src/DFMiniMp3.h:519:62: error: no matching function for call to 'Mp3Notify::OnPlayFinished(DfMp3_PlaySources, uint16_t&)'

                     T_NOTIFICATION_METHOD::OnPlayFinished(DfMp3_PlaySources_Flash, replyArg);

                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

C:\Users\svenomat\Documents\Arduino\Tonuino_LEDRing_V21\Tonuino_LEDRing_V21.ino:154:17: note: candidate: static void Mp3Notify::OnPlayFinished(uint16_t)

 static void OnPlayFinished(uint16_t track) {

             ^~~~~~~~~~~~~~

C:\Users\svenomat\Documents\Arduino\Tonuino_LEDRing_V21\Tonuino_LEDRing_V21.ino:154:17: note: candidate expects 1 argument, 2 provided

In file included from C:\Users\svenomat\Documents\Arduino\Tonuino_LEDRing_V21\Tonuino_LEDRing_V21.ino:7:0:

C:\Users\svenomat\Documents\Arduino\libraries\DFPlayer_Mini_Mp3_by_Makuna\src/DFMiniMp3.h:524:66: error: 'OnPlaySourceOnline' is not a member of 'Mp3Notify'

                     T_NOTIFICATION_METHOD::OnPlaySourceOnline(static_cast<DfMp3_PlaySources>(replyArg));

                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

C:\Users\svenomat\Documents\Arduino\libraries\DFPlayer_Mini_Mp3_by_Makuna\src/DFMiniMp3.h:529:68: error: 'OnPlaySourceInserted' is not a member of 'Mp3Notify'

                     T_NOTIFICATION_METHOD::OnPlaySourceInserted(static_cast<DfMp3_PlaySources>(replyArg));

                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

C:\Users\svenomat\Documents\Arduino\libraries\DFPlayer_Mini_Mp3_by_Makuna\src/DFMiniMp3.h:534:67: error: 'OnPlaySourceRemoved' is not a member of 'Mp3Notify'

                     T_NOTIFICATION_METHOD::OnPlaySourceRemoved(static_cast<DfMp3_PlaySources>(replyArg));

                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Mehrere Bibliotheken wurden für "SoftwareSerial.h" gefunden
Benutzt: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SoftwareSerial
Nicht benutzt: C:\Users\svenomat\Documents\Arduino\libraries\EspSoftwareSerial
exit status 1
Fehler beim Kompilieren für das Board Arduino Nano.

Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.
`

TonUino In der Version Always Queue mit max.Anzahl an Funktionen

SD-Karte-Neu-Googlestimme-Geändertes Adminmenü.zip
Tonuino-DEV-alwaysQueue_maxAusstattung-20-08-18.zip

Diese Version basiert grundlegend auf der Version DEV 2.1 von Thorsten Voss.
Es wurde ein Maximum von Zusatzfunktionen integriert. Die Details dazu sind am Anfang des Codes aufgeführt. Die meisten Zusatzfunktionen sind über defines zu oder abschaltbar.
Der Code wurde komplett umstruktuiert und kommentiert.
Die Reihenfolge der Einzelfunktionen im Adminmenü wurde verändert. Die entsprechenden Änderungen in den Ordnern mp3 und advert sind in den hier vorliegenden Dateien für die SD-Karte enthalten.
Die Abspielmodi arbeiten alle mit einer Queue.

Bedienung.pdf
TonUINO mit Weckerzusatz-2020-03-12.pdf
Weckerzusatz TonUINO verbesserte Schaltung.pdf

Falsche Ansage der Bedienung bei 5-Tasten/getauschter Funktion

Hi,

in der 5-Tasten-Variante kommt es zur falschen Ansage der Bedienung z.B. bei der Ordnerauswahl bei Erkennen einer neuen Karte, wenn im Admin-Menü die Funktion der Tasten Vol+- / Up-Down getauscht wurde.
Aufgefordet wird mit Vol+/- den Ordner auszuwählen, gedrückt werden muss jedoch Up/Down...

Tonuino-Alternative Software mit erweiterten Menues

Diese Version basiert auf der letzten hier veröffentlichten Version. Das Adminmenü wurde umorganisiert und einige Untermenüs hinzugefügt. Die Lautstärke einstellungen der Settings wurden getrennt nach Lautsprecher und Kopfhörer im Adminmenü integriert.
Eine Überwachung der Batteriespannung mit Warnung und Abschaltung integriert.
Die Überwachung erfolgt zyklisch und in zwei Stufen. Bei schwacher Batterie erfolgt eine Warnung. Bei entladener Batterie wird der Tonuino mit ausfaden der Wiedergabe abgeschaltet.
Die in der Zip Datei enthaltenen Ordner advert und mp3 müssen verwendet werden,
sonst ist die Zuordnung der Audiomessages nicht korrekt.
Durch die Vielzahl der Zusatzfunktionen ist es auf Grund des Speicherbedarfs leider nicht möglich, alle Funktionen zusammen über die defines zu aktivieren. Ohne die LED Animation sind alle anderen aber zusammen aktivierbar. Bei Nutzung der LED Animation muss z.B die Batterieüberwachung deaktiviert werden.

Fehler bei "Titel wiederholen" im Partymodus

Wenn man einen Ordner im Partymodus abspielt und dann die "Titel wiederholen"-Karte auflegt wird nicht der aktuell laufende Titel wiederholt.
Wenn man die Karte während des ersten Titels auflegt wird nicht der erste Titel der Zufallswiedergabe wiederholt, sondern es wird immer der Titel mit der Nummer 001 gespielt. Entsprechend führt auflegen während des 2. Titels der Zufallswiedergabe zu Titel Nummer 002 in Dauerschleife.
Es wird also irgendwie die Nummer in der Zufallswiedergabe als Tracknummer eingesetzt.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.