Pages: [1] 2   Go Down
Author Topic: Ajuda com codigo rfid  (Read 1472 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 102
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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);
}
}
}
Logged

Ribeirao Preto - Brazil
Offline Offline
Full Member
***
Karma: 0
Posts: 103
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Precisa de produtos para seu Arduino?
Não deixe de ver meus produtos no Mercado Livre!
http://lista.mercadolivre.com.br/_CustId_76934379

Brazil
Offline Offline
Sr. Member
****
Karma: 0
Posts: 381
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

????????????????????

Offline Offline
Full Member
***
Karma: 0
Posts: 102
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Brazil
Offline Offline
Sr. Member
****
Karma: 0
Posts: 381
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

é este hardware?

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

 smiley-cool
Logged

????????????????????

Brazil
Offline Offline
Sr. Member
****
Karma: 0
Posts: 381
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ajuda em algo?

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

 smiley-cool
Logged

????????????????????

Offline Offline
Full Member
***
Karma: 0
Posts: 102
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 102
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sim esse é o hardware que estou usando.
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 70
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Opa,
 tente este sketch:

Code:
/* 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);
}
}
}
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 102
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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


* erro.bmp (3840.05 KB, 1280x1024 - viewed 17 times.)
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 102
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 (3840.05 KB, 1280x1024 - viewed 15 times.)
« Last Edit: February 20, 2012, 11:17:28 am by luisandrade » Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 102
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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);
  }
}
 
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 70
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ih , foi mal...

 tenta esse: faltou um 0 no array... smiley-sad

Code:
/* 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);
}
}
}
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 102
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Full Member
***
Karma: 0
Posts: 102
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
  }
  }
Logged

Pages: [1] 2   Go Up
Jump to: