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

/*
* 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...");
}
}
}