RFID-läsare! Identifiera något med RFID från kreditkort för registreringsskyltar (2 / 2 steg)
Steg 2: Koden och ha kul scanning kort och få deras ID: N
#define RFID_ENABLE 2 //to RFID-aktiverar (ansluta stift 2 till den/enable)
#define CODE_LEN 10 //Max längden på RFID-tagg
#define VALIDATE_TAG 1 //should vi validera tag?
#define VALIDATE_LENGTH 200 //maximum läser b/w tag Läs och validera
#define ITERATION_LENGTH 2000 / / tid, ms, ges till användaren att flytta handen bort
#define START_BYTE 0x0A
#define STOP_BYTE 0x0D
char taggen [CODE_LEN];
void setup() {
Serial.BEGIN(2400); fequency behövs eftersom den använda frekvensen på modulen RFID-läsare
pinMode(RFID_ENABLE,OUTPUT);
}
void loop() {
enableRFID();
getRFIDTag();
IF(isCodeValid()) {
disableRFID();
sendCode();
Delay(ITERATION_LENGTH);
} annat {
disableRFID();
Serial.println ("fel: det gick inte att slutföra processen!");
}
Serial.flush();
clearCode();
}
/*
Rensar ut minnesutrymme för taggen till 0s.
*/
void clearCode() {
för (int jag = 0; jag < CODE_LEN; i ++) {
taggen [i] = 0;
}
}
/*
Skickar etiketten till datorn.
*/
void sendCode() {
Serial.Print("tag:");
för (int jag = 0; jag < CODE_LEN; i ++) {
Serial.Print(tag[i]);
}
}
/*
RFID-funktioner
*/
void enableRFID() {
digitalWrite (RFID_ENABLE, låg);
}
void disableRFID() {
digitalWrite (RFID_ENABLE, hög);
}
/*
Blockera funktion, väntar och får RFID-etiketten.
*/
void getRFIDTag() {
byte next_byte;
While(Serial.available() < = 0) {}
om ((next_byte = Serial.read()) == START_BYTE) {
byte bytesread = 0;
While(bytesread < CODE_LEN) {
IF(Serial.available() > 0) {//wait för den nästa byten
om ((next_byte = Serial.read()) == STOP_BYTE) bryta;
taggen [bytesread ++] = next_byte;
}
}
}
}
/*
Väntar på nästa inkommande taggen för att se om det matchar
den aktuella taggen.
*/
booleska isCodeValid() {
byte next_byte;
int count = 0;
medan (Serial.available() < 2) {//there är redan en STOP_BYTE i buffert
Delay(1); förmodligen inte en mycket ren millisekund
om (greve ++ > VALIDATE_LENGTH) return false;
}
Serial.Read(); kasta bort extra STOP_BYTE
om ((next_byte = Serial.read()) == START_BYTE) {
byte bytes_read = 0;
medan (bytes_read < CODE_LEN) {
om (Serial.available() > 0) {//wait för den nästa byten
om ((next_byte = Serial.read()) == STOP_BYTE) bryta;
om (taggen [bytes_read ++]! = next_byte) return false;
}
}
}
return true;
}
Ha kul skanna alla dina objekt! Hade jag kul också! Det är en väldigt cool modul! När läsaren väntar en RFID-etikett och gå därefter LED är röd. Titta på några av mina andra projekt på