1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
| #include <SPI.h>
#include <MFRC522.h>
/*#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
*/
#define RST_PIN 5
#define SS_PIN 53
MFRC522 mfrc522(SS_PIN, RST_PIN);
//Je déclare deux tableaux qui contient les identifiants des cartes rfid et nol associé
// On définit le type carte
struct t_carte {
const char* nom;
const char* UID;
};
t_carte tagCartes[] = {
{"colonnel", "9A 66 65 19"},
{"general", "0A 69 72 1A"},
{"President", "FA 7A 6A 19"},
{"secrétaire", "7A 6C 5E 19"},
{"soldat", "1A 4B A9 19"},
{"entretient", "B7 BF A7 5F"},
{"administrator", "80 30 7A 2A"}
};
const uint8_t nombreDeCartes = sizeof(tagCartes) / sizeof(tagCartes[0]);
/*int buzzer = 8;
int led_rouge = 14;
int led_verte = 15;
*/
void setup() {
Serial.begin(9600);
randomSeed(analogRead(A0)); // génération d'un peu d'aléatoire
while (!Serial);
/*pinMode(led_rouge, OUTPUT);
pinMode(led_verte, OUTPUT);
pinMode(buzzer, OUTPUT);
lcd.begin(16, 2);*/
SPI.begin();
mfrc522.PCD_Init();
mfrc522.PCD_DumpVersionToSerial();
//Serial.println(F("Scan PICC to see UID, SAK, type, and data blocks..."));
/*lcd.print("Dispositif");
lcd.setCursor(0, 1);
lcd.print("d'identification");
Serial.print("Dispositif d'identification");
delay(3000);
lcd.clear();*/
randoom();
}
void randoom(){
uint8_t carteAleatoire = random(0, nombreDeCartes); // un nombre entier entre 0 et nombreDeCartes-1
Serial.print(tagCartes[carteAleatoire].nom);
Serial.write("\tOx");
Serial.println(tagCartes[carteAleatoire].UID);
}
void loop() {
randoom();
/*lcd.print("Scannez votre");
Serial.print("Scannez votre badge ou carte");
lcd.setCursor(0, 1);
lcd.print("carte ou badge..");
*/
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
//mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
String UID = "";
for (byte i = 0; i < mfrc522.uid.size; i++) {
UID.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
UID.concat(String(mfrc522.uid.uidByte[i], HEX));
}
UID.toUpperCase();
if (UID.substring(1) == tagCartes[carteAleatoire].UID)
{
/*lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ACCES AUTORISE");*/
Serial.print("ACCES AUTORISE");
/*digitalWrite(led_verte, HIGH);
tone(buzzer, 1200, 100);
delay(125);
tone(buzzer, 1200, 100);
delay(2000);
digitalWrite(led_verte, LOW);
lcd.clear();*/
}
else {
/* lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ACCES REFUSE");*/
Serial.print("STOP");
/* digitalWrite(led_rouge, HIGH);
tone(buzzer, 200, 750);
delay(2000);
digitalWrite(led_rouge, LOW);
lcd.clear();*/
}
} |
Partager