When the Music Maker shield is not playing music I can scan RFID cards with accuracy. For example, here is the result I get reading several times the same card :
But when the Music Maker shield is playing music, the transmitted ID is "scrambled".1300494C4D5B
1300494C4D5B
1300494C4D5B
When I pause the music reading, the RFID ID transmitted come back normal.1300494C4D513&°à1300494CFF3hà 1300
1300494C4D5B
BANNED
1300494C4130049ÁFF63´f¡
Code: Select all
#include <SoftwareSerial.h>
#include <SPI.h>
#include <Adafruit_VS1053.h>
#include <SD.h>
#define SHIELD_CS 7 // VS1053 chip select pin (output)
#define SHIELD_DCS 6 // VS1053 Data/command select pin (output)
#define CARDCS 4 // Card chip select pin
#define DREQ 3 // VS1053 Data request, ideally an Interrupt pin
SoftwareSerial id20(5, 11); // virtual serial port
// create shield-example object!
Adafruit_VS1053_FilePlayer musicPlayer =
Adafruit_VS1053_FilePlayer(SHIELD_CS, SHIELD_DCS, DREQ, CARDCS);
void setup()
{
Serial.begin(9600);
id20.begin(9600);
if (! musicPlayer.begin()) { // initialise the music player
Serial.println(F("Couldn't find VS1053, do you have the right pins defined?"));
while (1);
}
Serial.println(F("VS1053 found"));
if (!SD.begin(CARDCS)) {
Serial.println(F("SD failed, or not present"));
while (1); // don't do anything more
}
Serial.println("SD OK!");
// Set volume for left, right channels. lower numbers == louder volume!
musicPlayer.setVolume(20,20);
// If DREQ is on an interrupt pin (on uno, #2 or #3) we can do background
// audio playing
musicPlayer.useInterrupt(VS1053_FILEPLAYER_PIN_INT); // DREQ int
if (! musicPlayer.useInterrupt(VS1053_FILEPLAYER_PIN_INT))
Serial.println(F("DREQ pin is not an interrupt pin"));
Serial.println(F("Playing track 001"));
musicPlayer.startPlayingFile("track001.mp3");
}
void loop ()
{
if(id20.available()) {
char i;
i = id20.read(); // receive character from ID20
Serial.print(i); // send character to serial monitor
}
if (Serial.available()) {
char c = Serial.read();
// if we get an 'p' on the serial console, pause/unpause!
if (c == 'p') {
if (! musicPlayer.paused()) {
Serial.println("Paused");
musicPlayer.pausePlaying(true);
} else {
Serial.println("Resumed");
musicPlayer.pausePlaying(false);
}
}
}
}