Codigo RC522!

Hola buenas!!
tengo un lector de rfid y varias tarjetas con su UID correspondiente. Estoy intentando que cuando el lector lea una tarjeta, se encienda un led, y que al volver a pasar la tarjeta, se apague. Esto lo he conseguido con todas las tarjetas (haciendo uso de un contador, y que cuando sea impar se encianda, y par se apague), sin embargo, necesito que esto suceda con la MISMA tarjeta. Es decir, que lea por ejemplo la primera tarjeta, y que solo esta primera pueda apagar de nuevo el led y no las otras.
espero que me podáis ayudar!! os adjunto el código que tengo por si os ayuda.

#include <SPI.h>
#include <MFRC522.h>

const int RST_PIN1 = 9;
const int SS_PIN1 = 10;      
MFRC522 mfrc522(SS_PIN1, RST_PIN1);

const int verde1 = 7;

int detectorTarjeta1 = 0;
int detectorTarjeta2 = 0;

//EN ESTE APARTADO, PONEMOS LAS TARJETAS QUE VAN A PODER ACCEDER AL SISTEMA
byte tarjeta1[4] = { 0xED, 0x22, 0x51, 0xD3};  // codigo de la tarjeta valida
byte tarjeta2[4] = { 0x90, 0x2C, 0x55, 0xD3};  // codigo de la tarjeta valida

// ESTA FUNCION RECIBE EL INDICADOR DE CADA TARJETA
void printArray(byte *buffer, byte bufferSize) {
   for (byte i = 0; i < bufferSize; i++) {
      Serial.print(buffer[i] < 0x10 ? " 0" : " ");
      Serial.print(buffer[i], HEX);
   }
}

//ESTA FUNCION REALIZA LA COMPARACION DE LOS VECTORES DE LAS TARJETAS, ES DECIR, SI SON IGUALES
bool isEqualArray(byte* arrayA, byte* arrayB, int length)
{
  for (int index = 0; index < length; index++)
  {
    if (arrayA[index] != arrayB[index]) return false;
  }
  return true;
}
void setup() {
  Serial.begin(9600);                                    // Iniciar computador serial
  SPI.begin();                                           // Iniciar SPI
  mfrc522.PCD_Init();

  pinMode(verde1,OUTPUT);     //led
}
void loop(){
  if (mfrc522.PICC_IsNewCardPresent()){                           //detectamos la presencia de una tarjeta


    if (mfrc522.PICC_ReadCardSerial()){    // si la puede leer, entonces...
       
       
       if(isEqualArray(mfrc522.uid.uidByte, tarjeta1, 4)){        // Comparar ID con las claves válidas (1)
           detectorTarjeta1++;   
           delay(500);                   
           
           if( detectorTarjeta1 % 2 != 0 ){                              //condicion que indica si es impar el numero de "detector de tarjeta"
              digitalWrite(verde1,HIGH);  
           }

           if ( detectorTarjeta1 % 2 == 0 ){                           //condicion que indica si es par
              digitalWrite(verde1,LOW);
           }
       }

       if(isEqualArray(mfrc522.uid.uidByte, tarjeta2, 4)){        // Comparar ID con las claves válidas (1)
           detectorTarjeta2++;   
           delay(500);                   
           
           if( detectorTarjeta2 % 2 != 0 ){                              //condicion que indica si es impar el numero de "detector de tarjeta"
              digitalWrite(verde1,HIGH);  
           }

           if ( detectorTarjeta2 % 2 == 0 ){                           //condicion que indica si es par
              digitalWrite(verde1,LOW);
           }
       }
    }
  }
}

I would suggest that you put the card Ids into an array so that you don't have to add additional code in loop if you decide to add more cards.

Given that, you can store the index of the card that turned the led on and ensure that only that one can turn it off.

I have already try that solution, but when i create the array and i call it in the isEqualArray function, it doesnt work. I have to admit that i dont know how to use the arrays very well.

thank you for the aswer!

Me sorprende que hayas hecho todo lo anterior y no puedas resolver lo que pides.

Lo que necesitas es usar un flag y cada vez que detectas la tarjeta le cambias el valor invertido.

// esto como global
bool flag = false;

// esto en tu loop
if (condicion con la tarjeta) {

    flag = !flag;   // esta es la solución

    if (flag)
        digitalWrite(verde1,HIGH);  
    else
        digitalWrite(verde1,LOW);  
}