Artouste:
le programme ci-dessous fait une relecture toute les secondes (presence tag) apres une 1ere lecture ok
sinon il tente une acquisition fonction de la durée de boucle.
c'est simple à adapter
/*
- 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 52 MOSI
- SPI MISO 12 51 MISO
- SPI SCK 13 50 SCK
- Hardware required:
- Arduino
- PCD (Proximity Coupling Device): NXP MFRC522 Contactless Reader IC
- PICC (Proximity Integrated Circuit Card): A card or tag using the ISO 14443A interface, eg Mifare or NTAG203.
- 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 //Arduino Uno
#define RST_PIN 9
byte tagok = 0;
unsigned long sernum[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1149839889}; //poste 0 N° carte lue, poste 1 à 9 pour UID carte a tester, poste 10 carte master
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
MFRC522::MIFARE_Key key;
void setup() {
Serial.begin(9600); // Initialize serial communications with the PC
SPI.begin(); // Init SPI bus
mfrc522.PCD_Init(); // Init MFRC522 card
Serial.println("LECTEUR OK ");
}
void loop() {
mfrc522.PCD_Init(); // Init MFRC522 card
if ( ! mfrc522.PICC_IsNewCardPresent()) {
Serial.println(" PAS DE BADGE PRESENT ");
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial()) return;
Serial.print("Card UID:"); //Dump UID
for (byte i = 0; i < 4; i++) {
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
}
sernum[0] = *((unsigned long *)mfrc522.uid.uidByte); //recup num serie lu long unsigned
Serial.print(" ");
Serial.print(sernum[0]);
Serial.print(" ");
Serial.print(sernum[0], HEX);
Serial.print(" ");
tagok = 0;
for (byte i = 1; i < 10; i++) {
if (sernum[0] == sernum[i]) tagok = 1; // carte reconnue dans la liste
}
if (sernum[0] == sernum[10]) tagok = 255; // carte master reconnue
if (tagok == 0) { // faire si carte inconnue
Serial.print("TAG INCONNU");
}
if (tagok > 0) //faire si carte reconnue
{
Serial.print("TAG OK ");
}
if (tagok == 255) //faire si carte master reconnue
{
Serial.print(" CARTE MASTER RECONNUE ");
}
Serial.println();
delay(1000); // delai entre 2 lectures apres reconnaissance tag
}
Ok parfait! Comme ça je recheck la valeur toutes les secondes pour vérifier que le bon UUID du badge est encore présent.
Merci beaucoup! 