Ajuda com codigo rfid

Olá pessoal!
Sou novo no fórum e iniciante no arduino, estou lendo bastante e aprendendo a respeito, estou tentando criar um código para controlar uma saída do arduino usando o RFID, crieu um código básico porém não está funcionando, a saída não aciona.
Segue o código:
Se alguém puder me ajudar agradeço muito.
/* RFID ID12
*/
char val = 0; // variable to store the data from the serial port
char tag1[14] = “1EOOD9AAA1CC”;
void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT);
}

void loop () {
// read the serial port

if(Serial.available() > 0) {
val = Serial.read();
Serial.print(val);
if(val == tag1[14]){
digitalWrite(13, HIGH);
}
}
}

Olá. Poderia dizer se está sendo impresso na serial o valor correto antes de ele ser comparado? Coloca um Serial.print("SAIDA HIGH"); ao inves do digitalwrite para ver se está funcionando normal nesse caso. Tente usar outra saida. O que está usando nessa saida? teste com um LED para ter certeza que ela nao está sendo acionada. Depois posta a resposta.

Que tipo de leitor de rfid esta usando, ele ja entrega o valor lido direto na serial? Não tem que "tratar" a leitura? :roll_eyes:

Então eu uso outro código pra ler a serial com o código do cartão rfid, no serial monitor aparece o código normal, estou usando RFID ID12 innovations. Estou usando saida 13 que tem um led na placa. Vou fazer os testes e posto os resultados.

é este hardware?

http://www.sparkfun.com/products/8419

8)

Ajuda em algo?

http://arduino.cc/playground/Code/ID12

8)

Usei o Serial.print("SAIDA HIGH"); esse é o codigo do cartão 1E00D9AAA1CC.

Sim esse é o hardware que estou usando.

Opa, tente este sketch:

/* RFID ID12
*/
char val = 0; // variable to store the data from the serial port
char tag1[] = {"1EOOD9AAA1CC"};
void setup() {
Serial.begin(9600); 
pinMode(13, OUTPUT);
}

void loop () {
// read the serial port

if(Serial.available() > 0) {
val = Serial.read();
Serial.print(val);
if(val == tag1[]){
digitalWrite(13, HIGH);
}
}
}

Obrigado pelo reply, então o sketch gera erro durante a compilação segue a imagem.

erro.bmp (3.75 MB)

Pessoal estou quase certo que o meu problema está no código lido, o código tem uns caracteres que não pertence ao cartão, segue: Como elimino esses caracteres?

código.bmp (3.75 MB)

Pessoal encontrei esse sketch deveria funcionar mas não funciona,deem uma olhada por favor, obrigado!
Como dito anteriormente acredito que meu problema seja no código lido do cartão, porém não sei como resolver.
#include <Servo.h>
#include <NewSoftSerial.h>
#define MY_TAG_CODE “3200A0346D5D”
Servo myservo;
NewSoftSerial RFID(2, 3);
String msg;
int locked = 180;
int unlocked = 0;
int trigger = 0;

void setup()
{
myservo.attach(9);

Serial.begin(9600);
Serial.println(“Serial Ready”);

RFID.begin(9600);
Serial.println(“RFID Ready”);

}
char c;

void loop()
{
while(RFID.available()>0)
{
c=RFID.read();
msg += c;
delay(1);
//Serial.println(msg);
//Serial.println(msg.length());
}
msg=msg.substring(1,13);

if(msg.indexOf(MY_TAG_CODE)>=0)
{
(trigger = 1);
Serial.println(“Card Accepted”);
digitalWrite(13, HIGH); // set the LED on
delay(200); // wait
digitalWrite(13, LOW); // set the LED off
}

if (trigger == 1)
{
Serial.println(“Door unlocked”);
myservo.write(unlocked);
delay(10000);
myservo.write(locked);

digitalWrite(13, HIGH);
delay(200);
digitalWrite(13, LOW);
Serial.println(“Door locked”);
(trigger = 0);
}
}

Ih , foi mal...

tenta esse: faltou um 0 no array... :(

/* RFID ID12
*/
char val = 0; // variable to store the data from the serial port
char tag1[] = {"1EOOD9AAA1CC"};
void setup() {
Serial.begin(9600); 
pinMode(13, OUTPUT);
}

void loop () {
// read the serial port

if(Serial.available() > 0) {
val = Serial.read();
Serial.print(val);
if(val == tag1[0]){
digitalWrite(13, HIGH);
}
}
}

Obrigado pelo reply, seguinte não deu certo, a saida 13 é acionada com qualquer cartão.

Pessoal finalmente o Skectch funcionou, segue o código: Só tenho uma dúvida como esta função funciona? if(msg.indexOf(MY_TAG_CODE)>=0)

define MY_TAG_CODE "1E00D9AAA1CC"

String msg; int trigger = 0; int out = 13; void setup()

{

pinMode(out,OUTPUT); Serial.begin(9600); Serial.println("Serial Ready"); Serial.begin(9600); Serial.println("RFID Ready");

} char c;

void loop() { while(out == HIGH); while(Serial.available()>0) { c=Serial.read(); msg += c; delay(1); Serial.println(msg);

} msg=msg.substring(1,13);

if(msg.indexOf(MY_TAG_CODE)>=0) { (trigger = 1); Serial.println("Card Accepted"); digitalWrite(out, HIGH); // set the LED on Serial.println("Acesso Liberado"); delay(2000); // wait digitalWrite(out, LOW); // set the LED off } }

Estranho.... tenta este site entao: https://github.com/practicalarduino/RFIDAccessControlSingle/blob/master/RFIDAccessControlSingle.pde