mp3-Spie­ler mit RFID-Modul - Lösung

// RFID-Bibiothek hinzufügen
# include "MFRC522.h"

// Player-Bibliothek hinzufügen
#include "SerialMP3Player.h"

# define TX 3
# define RX 4

SerialMP3Player mp3(RX,TX);
int Lautstaerke = 20;

// wenn Pause false -> Wiedergabe stoppen
// wenn Pause true -> Wiedergabe fortsetzen
bool Pause = false;

// Titel, der gespielt werden soll
int aktuellerTitel;

// Anschlüsse RFID definieren
# define RST 9
# define SDA 10

// RFID-Empfänger benennen
MFRC522 mfrc522(SDA, RST);

void setup()
{
  Serial.begin(9600);
  SPI.begin();

  // Serielle Kommunikation mit YX5300 starten
  mp3.begin(9600);     

  // Initialisierung des RFID-Empfängers
  mfrc522.PCD_Init();
}

void loop()
{
  // Variable für den Wert der Karte
  String WertDEZ;
  
  // Wenn keine Karte in Reichweite ist ..
  if (!mfrc522.PICC_IsNewCardPresent())
  {
    // .. wird die Abfrage wiederholt.
    return;
  }
  // Wenn kein RFID-Sender ausgewählt wurde ..
  if (!mfrc522.PICC_ReadCardSerial())
  {
    // .. wird die Abfrage wiederholt.
    return;
  }
  Serial.println(F("Karte entdeckt!"));

  // Dezimal-Werte in String schreiben
  for (byte i = 0; i < mfrc522.uid.size; i++)
  {
    WertDEZ = WertDEZ + String(mfrc522.uid.uidByte[i], DEC) + " ";
  }
  // Kennung dezimal anzeigen
  Serial.println("Wert in dezimal: " + WertDEZ);

  // Leerzeichen am Ende entfernen
  WertDEZ.trim();

  // Pause/Weiter
  if (WertDEZ == "195 106 18 23") 
  {
    if (Pause) mp3.pause();
    else mp3.play();
    Pause = !Pause;
  }
  
  // ersten Titel spielen
  if (WertDEZ == "131 125 21 23")
  {
    aktuellerTitel = 1;
    mp3.stop();
    mp3.play();
  }

  // zweiten Titel spielen
  if (WertDEZ == "227 77 233 22")
  {
    aktuellerTitel = 2;
    mp3.stop();
    mp3.play(aktuellerTitel, Lautstaerke);
  }

  // dritten Titel spielen
  if (WertDEZ == "3 150 78 21")
  {
    aktuellerTitel = 3;
    mp3.stop();
    mp3.play(aktuellerTitel, Lautstaerke);
  }

  delay(500);
}

Letzte Aktualisierung: 17. Nov 2023 @ 10:45