You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
124 lines
2.8 KiB
124 lines
2.8 KiB
/*
|
|
* 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
|
|
*/
|
|
|
|
#include <SPI.h>
|
|
#include <MFRC522.h>
|
|
|
|
#define SS_PIN 10
|
|
#define RST_PIN 9
|
|
|
|
#define LED_BOX 6
|
|
#define LED_PLATFORMS 5
|
|
|
|
int LedStatus=0;
|
|
bool onBox = false;
|
|
|
|
MFRC522 mfrc522(SS_PIN, RST_PIN);
|
|
|
|
long previousMillis = 0;
|
|
long interval = 10;
|
|
|
|
String uid_s;
|
|
String uid_old = "";
|
|
|
|
String uidRFID[] = {"b278d53b","8084d53b","d683d53b","01020304","7b83d53b","427ad53b"};
|
|
|
|
void setup() {
|
|
|
|
Serial.begin(9600); // Initialize serial communications with the PC
|
|
SPI.begin(); // Init SPI bus
|
|
mfrc522.PCD_Init(); // Init MFRC522 card
|
|
//Serial.println("In attesa di lettura...");
|
|
|
|
pinMode(LED_BOX, OUTPUT);
|
|
pinMode(LED_PLATFORMS, OUTPUT);
|
|
|
|
}
|
|
|
|
void loop() {
|
|
|
|
unsigned long currentMillis = millis();
|
|
|
|
if(currentMillis - previousMillis > interval) {
|
|
previousMillis = currentMillis;
|
|
|
|
// Look for new cards
|
|
if ( ! mfrc522.PICC_IsNewCardPresent()) {
|
|
|
|
if(LedStatus==200){
|
|
for(LedStatus=200;LedStatus>=0;LedStatus--){
|
|
analogWrite(LED_BOX,LedStatus);
|
|
analogWrite(LED_PLATFORMS,200-LedStatus);
|
|
delay(10);
|
|
}
|
|
onBox = false;
|
|
}
|
|
return;
|
|
}
|
|
|
|
// Select one of the cards
|
|
if ( ! mfrc522.PICC_ReadCardSerial()) {
|
|
return;
|
|
}
|
|
|
|
if(LedStatus<200){
|
|
for(LedStatus=0;LedStatus<200;LedStatus++){
|
|
analogWrite(LED_BOX,LedStatus);
|
|
analogWrite(LED_PLATFORMS,200-LedStatus);
|
|
delay(10);
|
|
}
|
|
onBox = true;
|
|
}
|
|
|
|
uid_s = "";
|
|
|
|
if (!mfrc522.PICC_IsNewCardPresent() && !mfrc522.PICC_ReadCardSerial()) {
|
|
|
|
for (byte i = 0; i < mfrc522.uid.size; i++) {
|
|
|
|
String uid_a = String(mfrc522.uid.uidByte[i] < 0x10 ? "0" : "");
|
|
String uid_b = String(mfrc522.uid.uidByte[i], HEX);
|
|
|
|
uid_s = uid_s+uid_a+uid_b;
|
|
}
|
|
}
|
|
|
|
if(uid_s != uid_old || onBox){
|
|
onBox = false;
|
|
uid_old = uid_s;
|
|
//Serial.print("RFID UID rivelato --> ");
|
|
//Serial.println(uid_s);
|
|
//Serial.println("");
|
|
|
|
boolean control = false;
|
|
for (int i = 0; i < sizeof(uidRFID)/sizeof(String); i++){
|
|
|
|
if(uidRFID[i] == uid_s){
|
|
|
|
Serial.print("ID");
|
|
Serial.print("\t");
|
|
Serial.println(i);
|
|
control = true;
|
|
break;
|
|
|
|
}
|
|
}
|
|
|
|
if(!control){
|
|
//Serial.println("Accesso vietato");
|
|
delay(1000);
|
|
}
|
|
|
|
//Serial.println();
|
|
//Serial.println("In attesa di lettura...");
|
|
}
|
|
}
|
|
}
|