Arduino : RFID-RC522 Aufhören zu Lesen die Karte mehrmals
Ich gerade zu fassen bekam, der RC522 RFID-Karte für arduino und arbeite mit der mitgelieferten Skizze.
MiFare-RFID-RC522
Was ich geblieben bin, ist das Verständnis, wie pause die Skizze, während die Karte gelesen wird, so ist es nur einmal gelesen. Im moment, solange die Karte ist verbunden mit dem RDIF-Leser die Skizze halten looping und Lesen Sie die Karte jedes mal.
Gibt es eine Verzögerung eingestellt werden können, aber schließlich Lesen Sie die Karte wieder, wenn der Anschluss länger als die Verzögerungszeit.
Was ich möchte ist, sagen zu können, es gibt zwar eine Karte, Verbindung, Lesen Sie die Karten-ID nur einmal dann weiter die Skizze, wenn die Karte eine Verbindung gebrochen ist.
Dies ist das Haupt-sketch-segment:
void loop()
{
uchar status;
uchar str[MAX_LEN];
//Search card, return card types
status = MFRC522_Request(PICC_REQIDL, str);
if (status != MI_OK)
{
return;
}
//Show card type
ShowCardType(str);
//Prevent conflict, return the 4 bytes Serial number of the card
status = MFRC522_Anticoll(str);
//str[0..3]: serial number of the card
//str[4]: XOR checksum of the SN.
if (status == MI_OK)
{
Serial.print("The card's number is: ");
memcpy(serNum, str, 5);
ShowCardID(serNum);
//Check people associated with card ID
uchar* id = serNum;
if (id[0] == 0x4B && id[1] == 0xE6 && id[2] == 0xD1 && id[3] == 0x3B) {
Serial.println("Hello Mary!");
}
else if (id[0] == 0x3B && id[1] == 0xE6 && id[2] == 0xD1 && id[3] == 0x3B) {
Serial.println("Hello Greg!");
}
else{
Serial.println("Hello unkown guy!");
}
}
MFRC522_Halt(); //command the card into sleep mode
delay(2000);
}
Danke Jungs.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich war in der Lage, dieses heraus, indem man die return Werte von
MFRC522_Request(PICC_REQIDL, str)
.Ich erstellt RFID_status als int und auch erstellt RFID_read wie ein int und auf 0 gesetzt.
Dann habe ich RFID_status zu testen, um zu sehen, wenn es eine aktive Karte-Verbindung.
Wenn ja und RFID_read war immer noch 0 ist, dann Lesen Sie die Karte und legen Sie RFID_read zu 1. In der nächsten Schleife wird die Karte nicht gelesen werden.
Einmal die Karte weggenommen wird RFID_status Lesen als " 0 " (Keine Verbindung) und RFID_read wird wieder auf 0 gesetzt.
NB: Es gibt eine Menge von code, die in dieser Skizze, die ich entfernt habe. Ich habe nur die leere Schleife und die zwei globalen Variablen, die ich erstellt.
Die ursprüngliche Skizze findet sich hier: MiFare-RFID-RC522 Skizze
Habe ich es wie folgt:
Grundsätzlich bin ich einfach nur zählen, wie oft es gibt keine Karte, in einer Reihe, wenn die Karte liegt auf dem reader,
noCardCount
wird niedrig bleiben. Nur wenn eine Menge von Zeiten in einer Reihe keine Karte wurde erkannt, es wird wieder gelesen.