/* * edited by Velleman / Patrick De Coninck * Read a card using a mfrc522 reader on your SPI interface * Pin layout should be as follows (on Arduino Uno - Velleman VMA100): * MOSI: Pin 11 / ICSP-4 * MISO: Pin 12 / ICSP-1 * SCK: Pin 13 / ISCP-3 * SS/SDA (MSS on Velleman VMA405) : Pin 10 * RST: Pin 9 * VCC: 3,3V (DO NOT USE 5V, VMA405 WILL BE DAMAGED IF YOU DO SO) * GND: GND on Arduino UNO / Velleman VMA100 * IRQ: not used */ #include #include #define SS_PIN 10 #define RST_PIN 9 RFID rfid(SS_PIN,RST_PIN); int power = 7; int led = 8; int serNum[5]; /* * This integer should be the code of Your Mifare card / tag */ int cards[][5] = {{117,222,140,171,140}}; bool access = false; void setup(){ Serial.begin(9600); SPI.begin(); rfid.init(); /* * define VMA100 (UNO) pins 7 & 8 as outputs and put them LOW */ pinMode(led, OUTPUT); pinMode (power,OUTPUT); digitalWrite(led, LOW); digitalWrite (power,LOW); } void loop(){ if(rfid.isCard()){ if(rfid.readCardSerial()){ Serial.print(rfid.serNum[0]); Serial.print(" "); Serial.print(rfid.serNum[1]); Serial.print(" "); Serial.print(rfid.serNum[2]); Serial.print(" "); Serial.print(rfid.serNum[3]); Serial.print(" "); Serial.print(rfid.serNum[4]); Serial.println(""); for(int x = 0; x < sizeof(cards); x++){ for(int i = 0; i < sizeof(rfid.serNum); i++ ){ if(rfid.serNum[i] != cards[x][i]) { access = false; break; } else { access = true; } } if(access) break; } } if(access){ Serial.println("Welcome Velleman "); /* * Valid card : Switch ON the LED for 1000 ms (1 second) */ digitalWrite(led, HIGH); delay(1000); /* * Valid card : Switch ON the POWER PIN for 2000 ms (2 seconds)), the POWER PIN can activate for example a relais, controlling a doorlock) */ digitalWrite(power, HIGH); delay(2000); digitalWrite(power, LOW); digitalWrite(led, LOW); access = false; } else { /* * NON-Valid card : switch ON and OFF the LED twice for 0,5 seconds */ Serial.println("Not allowed!"); digitalWrite(led, HIGH); delay(500); digitalWrite(led, LOW); delay(500); digitalWrite(led, HIGH); delay(500); digitalWrite(led, LOW); } } rfid.halt(); }