RC522 Modül Takılıyor

Merhaba kapım için yaptığım projemde basit bir şekilde rc522 üzerinden okuma yapıyorum kapı röle tetikliyorum ancak bazen rfid modül takılıyor bu 5 dakika 5 saat ya da 2-3 gün olabiliyor. Her ne kadar araştırsamda elle tutulur bir şey çıkmadı kodları buraya bırakayım eğer yazılımla da halledilebilirse olabilir.

#include <MFRC522.h>
#include <SPI.h>
int RST_PIN = 9;
int SS_PIN = 10;
const int role = 5;

MFRC522 rfid(SS_PIN, RST_PIN);
byte id[4] = {179, 66, 6, 5};//beyazkart1
byte id2[4] = {4, 28, 131, 66}; // otobüs
byte id3[4] = {12, 186, 44, 99}; //
byte id4[4] = {131, 157, 26, 7}; //beyazkart2
byte id5[4] = {44, 221, 231, 56}; //Anahtarlık
byte id6[4] = {4, 99, 13, 42}; //kart
byte id7[4] = {247, 9, 16, 234}; //bukart

void setup() {
SPI.begin();
rfid.PCD_Init();
delay(4);
pinMode(role, OUTPUT);

}

void loop() {
if (rfid.PICC_IsNewCardPresent()) {
if (rfid.PICC_ReadCardSerial()) {
if (rfid.uid.uidByte[0] == id[0] &&
rfid.uid.uidByte[1] == id[1] &&
rfid.uid.uidByte[2] == id[2] &&
rfid.uid.uidByte[3] == id[3] ||
rfid.uid.uidByte[0] == id2[0] &&
rfid.uid.uidByte[1] == id2[1] &&
rfid.uid.uidByte[2] == id2[2] &&
rfid.uid.uidByte[3] == id2[3] ||
rfid.uid.uidByte[0] == id3[0] &&
rfid.uid.uidByte[1] == id3[1] &&
rfid.uid.uidByte[2] == id3[2] &&
rfid.uid.uidByte[3] == id3[3] ||
rfid.uid.uidByte[0] == id4[0] &&
rfid.uid.uidByte[1] == id4[1] &&
rfid.uid.uidByte[2] == id4[2] &&
rfid.uid.uidByte[3] == id4[3] ||
rfid.uid.uidByte[0] == id5[0] &&
rfid.uid.uidByte[1] == id5[1] &&
rfid.uid.uidByte[2] == id5[2] &&
rfid.uid.uidByte[3] == id5[3] ||
rfid.uid.uidByte[0] == id6[0] &&
rfid.uid.uidByte[1] == id6[1] &&
rfid.uid.uidByte[2] == id6[2] &&
rfid.uid.uidByte[3] == id6[3] ||
rfid.uid.uidByte[0] == id7[0] &&
rfid.uid.uidByte[1] == id7[1] &&
rfid.uid.uidByte[2] == id7[2] &&
rfid.uid.uidByte[3] == id7[3])
{

    rightcard();

  }
  rfid.PICC_HaltA();
}

}

}

void ekranayaz() {
Serial.print(“ID:”);
for (int sayac = 0; sayac < 4; sayac++) {
Serial.print(rfid.uid.uidByte[sayac]);
Serial.print(" “);
}
Serial.print(”");
}

void rightcard() {
digitalWrite(role, HIGH);
delay(500);
digitalWrite(role, LOW);
}