Buenas,
Hemos creado un proyecto por el cual varios usuarios con sus tarjetas RFID, usan estas para escuchar un mp3 personalizado a la tarjeta.
Componentes:
Arduino UNO
NBCVFUINJ amplificador módulo de placa descodificador tarjeta U disco MP3.
doble Relé
USB con 12 ficheros MP3
RFID reader
Los problemas que tenemos son:
-Al pasar una tarjeta reproduce los 12 ficheros mp3.
-La placa no tiene librerias propias que hayamos encontrado.
-El botón "prev" y "next" de la placa sirve como controlador de volumen.
//incluir librerias necesarias para:
// tarjeta RDIFF
#include <SPI.h>
#include <MFRC522.h>
// Uso del USB de audio (speaker)
#define SS_PIN 10 //Esto define el pin 10 como el del sensor.
#define RST_PIN 9 //Esto define el pin 9 como el de reset.
MFRC522 mfrc522(SS_PIN, RST_PIN); //Creamos la instancia mfrc522
int siguientePin = 3; //definición del pin que usaremos como "next"
int pausePin = 4; //definición del pin que usaremos como "play/pausa"
void setup() {
// inicializar variables y funciones.
Serial.begin(9600); //Se inicia la comunicación con el sensor.
SPI.begin(); //Se inicia el puerto SPI
mfrc522.PCD_Init(); //Se inician las tarjetas
Serial.println("Acerca la tarjeta al sensor");
Serial.println(); //Se cambia de línea
pinMode (siguientePin, OUTPUT);
pinMode (pausePin, OUTPUT);
}
void LeerPista(int a){
for(int i=0;i<12;i++){
Serial.print("a ");
digitalWrite(siguientePin,LOW);
if(i==a){
digitalWrite(pausePin,HIGH);
delay(10000);
digitalWrite(pausePin,LOW);
a=0;
}else{
digitalWrite(siguientePin,HIGH);//mandamos señal para que vaya al siguiente MP3
delay(100);
}
}
}
void loop() {
// Serial.begin(9600); // tiempo de proceso
// activar el lector
if (!mfrc522.PICC_IsNewCardPresent()){
return;
}
//leer la tarjeta
if (!mfrc522.PICC_ReadCardSerial()){
return;
}
//Ahora guardamos el contenido de la tarjeta que llamaremos codigo.
String codigo ="";
byte letter;
for (byte i=0; i<mfrc522.uid.size; i++){
// Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
// Serial.print(mfrc522.uid.uidByte[i], HEX);
codigo.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
codigo.concat(String(mfrc522.uid.uidByte[i], HEX));
}
//si el contenido de la tarjeta es valido, debera identificar a que MP3 pertenece y por lo tanto activar el audio_XXXX
codigo.toUpperCase();
if (codigo.substring(1) == "F6 D9 11 9E"){
// sacar el audio 1
LeerPista(1);
}
if (codigo.substring(1) == "80 49 DD 87"){
LeerPista(2);
}
if (codigo.substring(1) == "94 F0 30 5B"){
LeerPista(3);
}
if (codigo.substring(1) == "90 00 DC 87"){
LeerPista(4);
}
if (codigo.substring(1) == "60 9A 7A 51"){
LeerPista(5);
}
if (codigo.substring(1) == "90 C0 BF 4F"){
LeerPista(6);}
if (codigo.substring(1) == "56 0A 27 9E"){
LeerPista(7);
}
if(codigo.substring(1) == "93 C2 AC AC"){
LeerPista(8);}
...
}
//si el contenido no es valido no se debe hacer nada.
¿Alguna sugerencia o ayuda?
Gracias