The arduino code read the rfid
tag [RFID reader is ID-12], compare it with Tag1
and Tag2
, if it is equal send on Serial Port 1 or 2, this value is read by processing that should play song1 or song2.
Arduino Code:
/*
Documentazione: http://www.logicaprogrammabile.it/arduino-leggere-tag-rfid-id-12/
*/
byte datarfid[16];
byte i = 0;
int LD1 = 8;
int LD2 = 6;
String tag ="";
void setup()
{
//init seriale a 9600 bps
pinMode(LD1, OUTPUT);
pinMode(LD2, OUTPUT);
Serial.begin(9600);
}
void loop()
{
digitalWrite(LD1, LOW);
digitalWrite(LD2, LOW);
//attendo la presenza di tutti e 16 byte provenienti
//dal lettore id-12
if(Serial.available() >= 16)
{
//leggo ogni byte e lo memorizo nell’array
//precedentemente definito
for(i = 0; i <= 15; i++)
{
datarfid[i] = Serial.read();
}
//ora ricavo i 10 byte che compongono il codice del tag
//e li concateno in un ogetto stringa
//da notare la conversione dei byte in char
for(i = 1; i <= 10; i++)
{
//concateno la stringa convertendo i byte in char
tag += (char)datarfid[i];
}
//ora verifico se il codice del tag corrisponde
//a quello memorizzato nel sistema
if(tag == "0107EB826F"){
/*
Serial.print("Song");
Serial.print(":");
*/
Serial.println(1);
digitalWrite(LD1, HIGH);
delay(500);
digitalWrite(LD1, LOW);
}
else if (tag == "0F0002F973"){
/*
Serial.print("Song");
Serial.print(:");
*/
Serial.println(2);
digitalWrite(LD1, HIGH);
delay(500);
digitalWrite(LD1, LOW);
}
else
{
Serial.print(0);
digitalWrite(LD2, HIGH);
delay(500);
digitalWrite(LD2, LOW);
}
tag="";
}
}
Processing Code:
import ddf.minim.*;
import ddf.minim.analysis.*;
import ddf.minim.effects.*;
import ddf.minim.signals.*;
import ddf.minim.spi.*;
import ddf.minim.ugens.*;
import processing.serial.*;
Minim minim;
Serial myPort;
String Tag1;
String Tag2;
String inString;
int lf = 10;
//this is the object that plays your file
AudioPlayer player;
AudioPlayer player2;
void setup()
{
size(300, 300);
//initialize minim
minim = new Minim(this);
player=minim.loadFile("Song1.mp3");
player2=minim.loadFile("Song2.mp3");
// List all the available serial ports:
println(Serial.list());
// Open the port you are using at the rate you want:
myPort = new Serial(this, Serial.list()[0], 9600);
myPort.bufferUntil(lf);
Tag1="1";
Tag2="2";
}
void draw()
{
background(0);
text("Ricevuto:" +inString, 10, 50);
if (inString!=null){
if (inString==Tag1)
{
text("Song 1",10,80);
player.play();
}
if (inString==Tag2)
{
text("Song 2",10,100);
player2.play();
}
}
}
void serialEvent(Serial p) {
inString = (myPort.readString());
}
void mousePressed()
{
//it's weird but you have to rewind a file to play it
player.rewind();
player.play();
}
When i try to compare the inString
with another String in an if condition it doesn't do that and it doesn't copy the inString
to another String