Hello!!
I have a problem with my programm that i canot fix it!!This is my program :
#include <MFRC522.h>
//Get library from https://github.com/ljos/MFRC522
//Sketch: gudjonholm@gmail.com
#include <SPI.h>
/*
Pins SPI UNO Mega2560 Leonardo
1 (NSS) SAD (SS) 10 53 10
2 SCK 13 52 SCK1
3 MOSI 11 51 MOSI1
4 MISO 12 50 MISO1
5 IRQ * * *
6 GND GND GND GND
7 RST 5 ? Reset
8 +3.3V (VCC) 3V3 3V3 3.3V
* Not needed
1 on ICPS header
*/
#define SAD 10
#define RST 5
MFRC522 nfc(SAD, RST);
#define ledPinOpen 2
#define ledPinClosed 3
#define ledPinOpen1 4
#define ledPinClosed1 6
void setup() {
pinMode(ledPinOpen1 , OUTPUT);
pinMode(ledPinOpen , OUTPUT);
pinMode(ledPinClosed, OUTPUT);
pinMode(ledPinClosed1, OUTPUT);
SPI.begin();
Serial.begin(115200);
Serial.println("Looking for MFRC522.");
nfc.begin();
byte version = nfc.getFirmwareVersion();
if (! version) {
Serial.print("Didn't find MFRC522 board.");
while(1); //halt
}
Serial.print("Found chip MFRC522 ");
Serial.print("Firmware ver. 0x");
Serial.print(version, HEX);
Serial.println(".");
}
#define PORT1_COUNT 2
#define PORT2_COUNT 1 /*edo bazoyme pases kartes kai poses mrelok exoyme*/
byte Authorized[PORT1_COUNT][6] = {
{0x20, 0x2B, 0x29, 0x33, 0xFF, 0xFF, },
{0xBA, 0x65, 0xB8, 0xB4, 0xFF, 0xFF, } /*f. example how to add more authorized cards*/
/*,{0x10, 0x14, 0x39, 0x2E, 0xFF, 0xFF, }*/
/*,{0x10, 0x14, 0x39, 0x2E, 0xFF, 0xFF, }*/
/*,{0x10, 0x14, 0x39, 0x2E, 0xFF, 0xFF, }*/
/*,{0x10, 0x14, 0x39, 0x2E, 0xFF, 0xFF, }*/
/*,{0x10, 0x14, 0x39, 0x2E, 0xFF, 0xFF, }*/
};
byte Authorized2[PORT2_COUNT][6] = {
{0x49, 0x83, 0xA2, 0xD5, 0xFF, 0xFF, }/*,
/*{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, } /*f. example how to add more authorized cards*/
/*,{0x10, 0x14, 0x39, 0x2E, 0xFF, 0xFF, }*/
/*,{0x10, 0x14, 0x39, 0x2E, 0xFF, 0xFF, }*/
/*,{0x10, 0x14, 0x39, 0x2E, 0xFF, 0xFF, }*/
/*,{0x10, 0x14, 0x39, 0x2E, 0xFF, 0xFF, }*/
/*,{0x10, 0x14, 0x39, 0x2E, 0xFF, 0xFF, }*/
};
void printSerial(byte *serial);
boolean isSame(byte *key, byte *serial);
boolean isCHECK(byte *serial);
void loop() {
byte status;
byte data[MAX_LEN];
byte serial[5];
boolean Opening = false;
digitalWrite(ledPinOpen, Opening);
digitalWrite(ledPinClosed, !Opening);
digitalWrite(ledPinOpen1, Opening);
digitalWrite(ledPinClosed1, !Opening);
status = nfc.requestTag(MF1_REQIDL, data);
if (status == MI_OK) {
status = nfc.antiCollision(data);
memcpy(serial, data, 5);
if(isCHECK(serial))
{
Serial.println("Authenticated");
Opening = true;
}
else
{
printSerial(serial);
Serial.println("is NOT authenticated");
Opening = false;
}
nfc.haltTag();
digitalWrite(ledPinOpen, Opening);
digitalWrite(ledPinClosed, !Opening);
digitalWrite(ledPinOpen1, Opening);
digitalWrite(ledPinClosed1, !Opening);
delay(2000);
}//if (status == MI_OK)
delay(500);
}//void loop()
boolean isSame(byte *key, byte *serial)
{
for (int i = 0; i < 4; i++) {
if (key[i] != serial[i])
{
return false;
}
}
return true;
}
boolean isCHECK(byte *serial)
{ for(int i = 0; i<PORT1; i++)
{
if(isSame(serial, Authorized[i]))
return true;
}
for(int i = 0; i<PORT2; i++)
{
if(isSame(serial, Authorized2[i]))
return true;
}
return false;
}
void printSerial(byte *serial)
{
Serial.print("Serial:");
for (int i = 0; i < 4; i++) {
Serial.print(serial[i], HEX);
Serial.print(" ");
}
}
I am trying to open with diferrent cards,diferent doors but i dont know how!! I am using relays and an antena and cars but i cannot do it to open different doors with different keys!For example with one key it will open specific door and no other and with another key it will open another diferent door!!
Can you please help!!!I would be gratefull!!! THANK YOU!!! ![]()
Moderator edit: CODE TAGS