Sorry für das Cross Posting, aber damit es auch hier verlinkt ist:
Auszug aus dem verlinkten Beitrag:
Anpassungen für Chip GB3200B:
Wenn ich das richtig überblicke, sind folgende Anpassungen relevant:
- Einen Titel aus genau dem Ordner abspielen, wo man die Titelanzahl mit
getFolderTrackCount(folderNumber)
ermitteln will.
- Vorzugsweise einen Titel ohne echte Geräusche also „Stille“, bspw:
playTrack(folder, TRACKNUMBER_SILENCE); delay(100); pause(); uint16_t trackCount = mp3.getFolderTrackCount(folder);
- Das Finish-Event für Advertisement Titel abfangen, bspw. in meinem Kontext (s.o.):
if (hasGB3200B && (lastStartedFolder == FOLDERCODE_ADVERTISEMENT)) { lastStartedFolder = activeFolder; lastStartedTrack = activeTrack; return; }
.
.
.Anpassungen für Chip MH2024_16SS:
Wenn ich das richtig überblicke, sind folgende Anpassungen relevant:
- Ausreichend Verzögerung nach dem mp3.begin() und mp3.start()
- Afaik 1-x Sekunden, bspw.
delay(1000);
- Im DFMiniMP3 die Notification-Case 0x4C hinzufügen, um das FinishEvent zu erzeugen
case 0x3d: // micro sd case 0x4c: T_NOTIFICATION_METHOD::OnPlayFinished(DfMp3_PlaySources_Sd, replyArg); break;
Sowie die Checksummen Prüfung ignorieren:
uint8_t out[DfMp3_Packet_SIZE] = { 0x7E, 0xFF, 06, command, 00, static_cast<uint8_t>(arg >> 8), static_cast<uint8_t>(arg & 0x00ff), 00, 00, 0xEF }; if (ignoreCheckSum) { out[DfMp3_Packet_HiByteCheckSum] = 0xEF; out[DfMp3_Packet_LowByteCheckSum] = 00; out[DfMp3_Packet_EndCode] = 00; } else { setChecksum(out); }