RFID rc522

Ciao a tutti ho un piccolo problemino di codice:
ho acquistato la scheda rfid rc522, collegata, provata con la libreria "rfid-master" e usando gli esempi riesco a leggere sulla seriale il codice della carta e del tag venduti con la scheda.
Come faccio a salvare in una variabile il codice che viene mostrato sul monitor seriale?
Mi sto perdendo in un bicchiere d'acqua, lo immagino....
Ecco il codice:

/*

  • MFRC522 - Library to use ARDUINO RFID MODULE KIT 13.56 MHZ WITH TAGS SPI W AND R BY COOQROBOT.
  • The library file MFRC522.h has a wealth of useful info. Please read it.
  • The functions are documented in MFRC522.cpp.
  • Based on code Dr.Leong ( WWW.B2CQSHOP.COM )
  • Created by Miguel Balboa (circuitito.com), Jan, 2012.
  • Rewritten by Søren Thing Andersen (access.thing.dk), fall of 2013 (Translation to English, refactored, comments, anti collision, cascade levels.)
  • Released into the public domain.
  • This sample shows how to setup a block on a MIFARE Classic PICC to be in "Value Block" mode.
  • In Value Block mode the operations Increment/Decrement/Restore and Transfer can be used.

----------------------------------------------------------------------------- empty_skull

  • Aggiunti pin per arduino Mega

  • Scritto semplice codice per la scrittura e lettura

  • add pin configuration for arduino mega

  • write simple read/write Code for new entry user

http://mac86project.altervista.org/

----------------------------------------------------------------------------- Nicola Coppola

  • Pin layout should be as follows:
  • Signal Pin Pin Pin
  • Arduino Uno Arduino Mega MFRC522 board

  • Reset 9 5 RST
  • SPI SS 10 53 SDA
  • SPI MOSI 11 51 MOSI
  • SPI MISO 12 50 MISO
  • SPI SCK 13 52 SCK
  • The reader can be found on eBay for around 5 dollars. Search for "mf-rc522" on ebay.com.
    */

#include <SPI.h>
#include <MFRC522.h>

#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.

void setup() {
Serial.begin(9600); // Initialize serial communications with the PC
SPI.begin(); // Init SPI bus
mfrc522.PCD_Init(); // Init MFRC522 card
//Serial.println("Scan a MIFARE Classic PICC to demonstrate Value Blocks.");
}

void loop() {

// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return;
}

// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}
// Now a card is selected. The UID and SAK is in mfrc522.uid.

// Dump UID
Serial.print("Card UID:");
for (byte i = 0; i < mfrc522.uid.size; i++) {
Serial.print(mfrc522.uid.uidByte < 0x10 ? " 0" : " ");
_ Serial.print(mfrc522.uid.uidByte*, HEX);_
_
}*_
_ Serial.println();_

}
[/quote]
e quello che ricevo sulla seriale è:
Card UID: A9 80 D5 B5
quindi direi che il tutto funziona.
Grazie

Il codice è un 32 bit quindi devi creare una variabile unsigned long od un array dello stesso tipo se vuoi memorizzare più card.

io in realtà vorrei avere un array con dentro i codici ( che ho letto con lo sketch soprapostato).
Nel loop vorrei andare a leggere se c'è un tag letto, nel caso vorrei salvare il codice del tag in una variabile, andarla a confrontare con quelle dell'array e se combacia con una far accendendere un led o emettere un suono.

tipo questo array
uint32_t validtag[]= {aaaaaaaaaaa,bbbbbbbbbb}; //definisco le tag nfc

salvo il codice della carta nella variabile tag
e poi con un if la confronto con le validtag

Ci sono due modi per fare quello che chiedi.

Metodo manuale: attivi il programma di lettura, leggi i codici di tutti gli RFID che possiedi e li trascrivi su un secondo programma (quello operativo) in una variabile array.

Metodo automatico: prepari un programma che memorizza i vari codici all'interno della memoria EEPROM aggiungendo solo quelli nuovi mediante un pulsante di conferma; lo stesso programma accende il LED ed emette un suono.

Io preferisco il manuale per iniziare.
Dallo sketch che ho postato sopra io arrivo al punto in cui sul seriale mi appre l'UID della tessera che passo.
Non so però come fare ad avere questo valore in una variabile per poi andarlo a confrontare con l'array..
Mi riuscite a scrivere questo pezzetto di codice?

gazza, guarda l'ultimo pezzo del codice che ho creato io per il securduino della cantina...

boolean idInArray(uint32_t array[], uint32_t id) {
 boolean result = false;
 for (uint32_t i = 0; i <= (ntessere -1); i++) {
   if (id == array[i]) {
     result = true;
     break;
   }
 }
return result;

Questo metodo mi va a ricercare se la tag nfc che ho passato corrisponde ad una che ho preimpostato in un array...

A me questo codice da errore nelle righe 69 e 70

sketch_nov15a.ino: In function 'void loop()':
sketch_nov15a:69: error: ISO C++ forbids comparison between pointer and integer
sketch_nov15a:70: error: call of overloaded 'print(byte [10], int)' is ambiguous
C:\Program Files\Arduino\hardware\arduino\cores\arduino/Print.h:62: note: candidates are: size_t Print::print(unsigned char, int) <near match>
C:\Program Files\Arduino\hardware\arduino\cores\arduino/Print.h:63: note:                 size_t Print::print(int, int) <near match>
C:\Program Files\Arduino\hardware\arduino\cores\arduino/Print.h:64: note:                 size_t Print::print(unsigned int, int) <near match>
C:\Program Files\Arduino\hardware\arduino\cores\arduino/Print.h:65: note:                 size_t Print::print(long int, int) <near match>
C:\Program Files\Arduino\hardware\arduino\cores\arduino/Print.h:66: note:                 size_t Print::print(long unsigned int, int) <near match>