DFPlayer verschiedene Versionen

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);
	}