Auf jeden Fall habe ich nun Zeit mir ein paar Dinge schonmal zu überlegen.
byte daten [][11] = {
/*
* [*] [0] = zugehörige Liednummer
* [*] [1-11] = UID
*/
{2, 0x04, 0xE0, 0x2A, 0xDA, 0xAB, 0x5C, 0x80}, // Michelin
{1, 0x04, 0xDC, 0x2A, 0xDA, 0xAB, 0x5C, 0x80}, // Eule
{3, 0x04, 0xD8, 0x2A, 0xDA, 0xAB, 0x5C, 0x80}, // Spongebob
{4, 0x04, 0xE8, 0x2A, 0xDA, 0xAB, 0x5C, 0x80}, // Hai
{5, 0x04, 0xED, 0x2A, 0xDA, 0xAB, 0x5C, 0x80}, // Leo Lausemaus
{6, 0x04, 0xF2, 0x2A, 0xDA, 0xAB, 0x5C, 0x80}, // Benjamin
{7, 0x04, 0xF6, 0x2A, 0xDA, 0xAB, 0x5C, 0x80}, //
{8, 0x04, 0xFA, 0x2A, 0xDA, 0xAB, 0x5C, 0x80}, //
{9, 0x04, 0x00, 0x2A, 0xDA, 0xAB, 0x5C, 0x81}, //
{10, 0x04, 0x03, 0x29, 0xDA, 0xAB, 0x5C, 0x81}, //
{11, 0x04, 0x07, 0x29, 0xDA, 0xAB, 0x5C, 0x81}, //
{0} // Zum Beenden der While
};
....
....
....
// UID Vergleichen
int h = 0;
do {
helfer = true;
for (int j=1; j<10; j++) {
if (mfrc522.uid.uidByte[j-1] != daten [h] [j]) {
helfer = false;
break;
}
}
if (helfer) {
if (daten [h][0] == 0 ) break;
myDFPlayer.play(daten [h] [0]);
break ; //Schleife verlassen wenn er etwas gefunden hat
}
h = h +1;
} while ( daten [h][0] != 0);
Dieses Konstrukt funktioniert. Es funktioniert ja sogar so gut, dass auch wirklich nur der TAG 0x04, 0xE8, 0x2A, 0xDA, 0xAB, 0x5C, 0x80 das Lied 4 spielen darf.
Das macht sicher Sinn bei Zutrittskontrollen oder in der Warenwirtschaft.
Aber um das Lied auf einem Spielzeug abzuspielen geht es doch sicher auch eine Stufe lockerer.
Ich denke mir dass ich doch den TAG beschreiben kann. Mit dem einfachen Text "01 004"
01 = spiele Lied
001 = Lied 1, 002 = Lied 2,....
02 = spiele Ordner normal bspw. Hörbücher
001 = Ordner 1, 002 = Ordner 2, .....
03 = spiele Ordner random, bspw. Kinderalbum
001 = Ordner 1, 002 = Ordner 2, .....
04 = Steuerungsaktion
001 = pause, 002 = play, 003 = play/pause, 004 = lauter, 006 = ausschalten, 512 = Lautstärke auf 12,.....
Dies kann ich dann im Sketch vorbereiten und muss nichtmehr an den Arduino ran, bei einer neuen Figur beschreibe ich dann den TAG mit "03 008", schiebe auf die SD Karte den passenden Ordner und los geht es.
Bis jetzt habe ich mir die 10 ersten TAGs genommen, habe sie mit 1 bis 10 beschriftet um nicht durcheinander zu kommen und habe sie im Code vorbereitet, damit ich nicht nochmal an den Arduino muss wenn eine Figur dazu kommt.
Nun lese ich mich mal durch wie ich den TAG auslesen, und spalte. Bei Fragen melde ich mich in diesem Thread ![]()
EDIT: hier schon die erste Frage:
Macht es denn Sinn den Text mit 01 .... zu beschreiben oder soll ich lieber HEX-Zahlen oder irgendwelche Zeichen nehmen, weil sie sich leichter zerpflücken lassen?


