Pages: [1] 2 3   Go Down
Author Topic: rfid e led  (Read 2080 times)
0 Members and 1 Guest are viewing this topic.
Dueville (VI)
Online Online
Edison Member
*
Karma: 28
Posts: 1748
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

salve a tutti, sarei interessato ad accendere dei led alla lettura di un tag rfid.
L' id del tag viene inviato via seriale, ma il programma che ho fatto non riesce a fare nulla perchè è in grado di intercettare un solo carattere sulla seriale, qualcuno potrebbe consigliarmi un codice per fare questo?
(L' id di un tag è alfanumerico e composto da 10 caratteri)
Logged

Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

Bergamo
Offline Offline
God Member
*****
Karma: 1
Posts: 663
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao

premesso che senza vedere il tuo codice è difficile... comunque:

- crei un array di char dove andrai a salvare i vari caratteri letti dalla seriale
- quando avrai letto 10 caratteri farai un confronto tra il valore nel tuo array e quello che ti aspetti
Logged

lucadentella.it

Dueville (VI)
Online Online
Edison Member
*
Karma: 28
Posts: 1748
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

il problema è che non sono molto pratico, qualcuno avrebbe un codice da mandarmi?
Logged

Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

Bergamo
Offline Offline
God Member
*****
Karma: 1
Posts: 663
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao

è impossibile mandarti un codice "pronto" senza neppure sapere come hai attaccato il lettore rfid, quale hardware hai, qual'è il codice "valido", a che pin hai collegato il led... inizia a postare quanto hai già scritto così possiamo sistemarlo insieme
Logged

lucadentella.it

Dueville (VI)
Online Online
Edison Member
*
Karma: 28
Posts: 1748
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

certo! scusa se non ti ho dato tutte le informazioni.
Allora: il tx del lettore l'ho collegato all' rx di arduino e l'alimentazione del lettore collegata al gnd e +5v di arduino, uso un arduino uno e un mac con leopard e arduino ide 1.0 oppure 0022.
Il codice è:
Code:
int Led=12;

int incomingByte; 



void setup()

{

 pinMode(Led, OUTPUT);

 Serial.begin(9600);

}



void loop()

{

 if (Serial.available() > 0) {

   incomingByte = Serial.read();

 if (incomingByte == 'id della card') {

 digitalWrite(Led, HIGH);

                             }

                           } 

   if (incomingByte == ' id della card') {

    digitalWrite(Led, LOW);

   }

 }
Il problema e che non funziona nulla! smiley-confuse
Logged

Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

Bergamo
Offline Offline
God Member
*****
Karma: 1
Posts: 663
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

l'ho scritto al volo... compila ma non ho sottomano un arduino per provarlo... prima di collegare il lettore rfid prova con il serial monitor inviando tu il codice che ti aspetti corretto... e mi aspetto che mi spieghi come funziona  smiley-wink

Code:
#define LED 12
#define BUFFER_SIZE 11

const char* RFID_ID = "XXXXXXXXXX";
char buffer[BUFFER_SIZE];
byte buffer_position;
int output_state;

void setup() {
 
  pinMode(LED, OUTPUT);
  output_state = LOW;
  digitalWrite(LED, output_state);
  Serial.begin(9600);
  buffer_position = 0;
}

void loop() {

  if(Serial.available() != 0) {
   
    byte rx_byte = Serial.read();
    if(buffer_position < BUFFER_SIZE - 2) {
      buffer[buffer_position] = rx_byte;
      buffer_position++;
    } else {
      buffer[0] = rx_byte;
      buffer_position = 1;
    }
   
    if(buffer_position == BUFFER_SIZE - 1) {
     
      buffer[buffer_position] = '\0';
      if(strcmp(buffer, RFID_ID) == 0) {
        if(output_state == LOW) output_state = HIGH;
        else output_state = LOW;
        digitalWrite(LED, output_state);
      }
      buffer_position = 0;
    }
  }
}
Logged

lucadentella.it

Dueville (VI)
Online Online
Edison Member
*
Karma: 28
Posts: 1748
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

non esageriamo.... ho solo 12 anni  smiley-mr-green  smiley-mr-green  smiley-mr-green !
Logged

Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

Dueville (VI)
Online Online
Edison Member
*
Karma: 28
Posts: 1748
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

mi dispiace ma non funziona!
Logged

Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

0
Offline Offline
Edison Member
*
Karma: 24
Posts: 2309
Have you mooed today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao cece99,
io di solito quando ho qualcosa sotto mano, e non so proprio da che parte prenderlo, per prima cosa faccio una ricerca con google:
http://bit.ly/ILQr1j

Vedrai che troverai molti progetti completi, a disposizione.
CHe hw stai utilizzando (parlo del lettore rfid)?
Logged

Dueville (VI)
Online Online
Edison Member
*
Karma: 28
Posts: 1748
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

utilizzo un lettore seedstudio che comunica in ttl!
ho già cercato su google ma nulla.
Logged

Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

Tuscany
Offline Offline
Edison Member
*
Karma: 76
Posts: 2108
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ma se modifichi il tuo sketch cosi'

void loop() {
if (Serial.available() > 0) {
   incomingByte = Serial.read();
  Serial.print(incomingByte,DEC);
                    } 
  }

sul SerialMonitor appare qualcosa ?

Logged

Dueville (VI)
Online Online
Edison Member
*
Karma: 28
Posts: 1748
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

no, non appare nulla!
Logged

Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

Tuscany
Offline Offline
Edison Member
*
Karma: 76
Posts: 2108
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Allora, presupposto che il Reader RFID funzioni, che sia alimentato alla tensione giusta, che il TAG sia della stessa frequenza, che il Baudrate sia identico, che...... etc etc etc

c'e' un problema di collegamenti.

Ma probabilmente il problema e' una delle cose appena menzionate.

Logged

Dueville (VI)
Online Online
Edison Member
*
Karma: 28
Posts: 1748
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

impossibile: ho caricato uno sketch che mostra il numero del tag e funziona tutto: mi mostra l' id!
i tag e il reader sono a 125 khz!
Logged

Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

Bergamo
Offline Offline
God Member
*****
Karma: 1
Posts: 663
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ok c'erano un paio di errori, questo va provato inserendo via serial monitor 'XXXXXXXXXX' mi cambia lo stato del led sulla porta 6...

Code:
#define LED 6
#define BUFFER_SIZE 11

const char* RFID_ID = "XXXXXXXXXX";
char buffer[BUFFER_SIZE];
byte buffer_position;
int output_state;

void setup() {
 
  pinMode(LED, OUTPUT);
  output_state = LOW;
  digitalWrite(LED, output_state);
  Serial.begin(9600);
  buffer_position = 0;
}

void loop() {

  if(Serial.available() != 0) {
   
    byte rx_byte = Serial.read();
    if(buffer_position < BUFFER_SIZE - 1) {
      buffer[buffer_position] = rx_byte;
      buffer_position++;
      if(buffer_position == BUFFER_SIZE - 1) {
        buffer[buffer_position] = '\0';
        if(strcmp(buffer, RFID_ID) == 0) {
          if(output_state == LOW) output_state = HIGH;
          else output_state = LOW;
          digitalWrite(LED, output_state);
        }
        buffer_position = 0;
      }
    }
  }
}
Logged

lucadentella.it

Pages: [1] 2 3   Go Up
Jump to: