Sorry Robin, been ill.
This is the original code you put on, just added the serial print fadeout mp3
/*
Initial Author: ryand1011 (https://github.com/ryand1011)
Reads data written by a program such as "rfid_write_personal_data.ino"
See: https://github.com/miguelbalboa/rfid/tree/master/examples/rfid_write_personal_data
Uses MIFARE RFID card using RFID-RC522 reader
Uses MFRC522 - Library
-----------------------------------------------------------------------------------------
MFRC522 Arduino Arduino Arduino Arduino Arduino
Reader/PCD Uno/101 Mega Nano v3 Leonardo/Micro Pro Micro
Signal Pin Pin Pin Pin Pin Pin
-----------------------------------------------------------------------------------------
RST/Reset RST 9 5 D9 RESET/ICSP-5 RST
SPI SS SDA(SS) 10 53 D10 10 10
SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16
SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14
SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15
*/
#include <SPI.h>
#include <MFRC522.h>
#define RST_PIN 9 // Configurable, see typical pin layout above
#define SS_PIN 10 // Configurable, see typical pin layout above
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance
//*****************************************************************************************//
void setup() {
Serial.begin(9600); // Initialize serial communications with the PC
SPI.begin(); // Init SPI bus
mfrc522.PCD_Init(); // Init MFRC522 card
}
void PrintHex(uint8_t *data, uint8_t length) // prints 8-bit data in hex with leading zeroes
{
char tmp[16];
for (int i = 0; i < length; i++) {
sprintf(tmp, "0x%.2X", data[i]);
Serial.print(tmp); Serial.print(" ");
}
}
uint8_t buf[10] = {};
MFRC522::Uid id;
MFRC522::Uid id2;
bool is_card_present = false;
//*****************************************************************************************//
void cpid(MFRC522::Uid *id) {
memset(id, 0, sizeof(MFRC522::Uid));
memcpy(id->uidByte, mfrc522.uid.uidByte, mfrc522.uid.size);
id->size = mfrc522.uid.size;
id->sak = mfrc522.uid.sak;
}
bool cmpid(MFRC522::Uid *id1, MFRC522::Uid *id2) {
return memcmp(id1, id2, sizeof(MFRC522::Uid));
}
void deregister_card() {
is_card_present = false;
memset(&id, 0, sizeof(id));
}
uint8_t control = 0x00;
void loop() {
MFRC522::MIFARE_Key key;
for (byte i = 0; i < 6; i++) {
key.keyByte[i] = 0xFF;
}
MFRC522::StatusCode status;
//-------------------------------------------
// Look for new cards
if ( !mfrc522.PICC_IsNewCardPresent()) {
fadeOutMP3();
}
else {
if ( !mfrc522.PICC_ReadCardSerial()) {
// do nothing;
}
else {
playMP3();
}
}
Serial.println("CardRemoved");
delay(500); //change value if you want to read cards faster
mfrc522.PICC_HaltA();
mfrc522.PCD_StopCrypto1();
}
//*****************************************************************************************//a
void playMP3() {
//PrintHex(id.uidByte, id.size);
//Serial.println("hello");
bool result = true;
uint8_t buf_len = 4;
cpid(&id);
Serial.print("NewCard ");
PrintHex(id.uidByte, id.size);
Serial.println("");
while (true) {
control = 0;
for (int i = 0; i < 3; i++) {
if (!mfrc522.PICC_IsNewCardPresent()) {
if (mfrc522.PICC_ReadCardSerial()) {
//Serial.print('a');
control |= 0x16;
}
if (mfrc522.PICC_ReadCardSerial()) {
//Serial.print('b');
control |= 0x16;
}
//Serial.print('c');
control += 0x1;
}
//Serial.print('d');
control += 0x4;
}
//Serial.println(control);
if (control == 13 || control == 14) {
//card is still there
}
else {
break;
}
}
}
//==========
void fadeOutMP3() {
// don't know what should go here
Serial.println("fadeoutMP3");
delay(500); //change value if you want to read cards faster
}
out come
fadeoutMP3
CardRemoved
NewCard 0x0A 0x97 0xF3 0x16
CardRemoved
fadeoutMP3
CardRemoved
fadeoutMP3
CardRemoved
NewCard 0x8C 0xDE 0x63 0xA9
CardRemoved
fadeoutMP3
CardRemoved
NewCard 0x3A 0x5F 0xDE 0x16
CardRemoved
fadeoutMP3
CardRemoved
Also recognises the same tag if i put it to the reader twice.
So this is good.
fadeoutMP3
CardRemoved
fadeoutMP3
CardRemoved
NewCard 0x3A 0x5F 0xDE 0x16
CardRemoved
fadeoutMP3
CardRemoved
NewCard 0x3A 0x5F 0xDE 0x16
CardRemoved
fadeoutMP3
CardRemoved
NewCard 0x3A 0x5F 0xDE 0x16
CardRemoved
fadeoutMP3