TRYING TO SOLVE SOME PROBLEMS WITH MY PROGRAM

Hello!! :slight_smile: 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!!! :slight_smile:

Moderator edit: CODE TAGS

The name of each card is different.

#include <PN532.h>
#include <SPI.h>

#define PN532_CS 10
PN532 nfc(PN532_CS);
#include <LiquidCrystal.h>


LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
unsigned long int simdikiid=0;
unsigned long int oncekiid=0;
unsigned long int sayi=0;

int tek=0;
void setup(void) {
  pinMode(8, OUTPUT);
  lcd.begin(16, 2);
   lcd.print("read id");
   delay(500);
   
  Serial.begin(9600);
  
  nfc.begin();


}
  

void loop(void) {
  uint32_t id;

  id = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A);
if(id!=0){

simdikiid=id;

if(simdikiid!=oncekiid){
  
sayi=sayi+1;
lcd.clear();
lcd.setCursor(0, 0);  
 lcd.print("ID NO=");
lcd.setCursor(7, 0);  
lcd.print(id);
Serial.println(sayi); 
Serial.println(id); 
lcd.setCursor(0, 1);  
 lcd.print("EVET");
 lcd.setCursor(5, 1);
lcd.print(sayi);
digitalWrite(8, HIGH);
delay(100);
digitalWrite(8, LOW);
  


  
  
}

oncekiid=simdikiid;
}

}

Arlove where i will use this code that you gave me?? :slight_smile: Thank you :slight_smile: