Lecteur RFID

Bonjour à tous, j'ai un petit problème avec mon projet actuel. Il s'agit de cartes RFID et selon la carte qui passe sur le lecteur une LED de couleur différente pour chaque carte s'allume. Voici mon programme :

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

#define SS_PIN 53
#define RST_PIN 5

MFRC522 mfrc522(SS_PIN, RST_PIN);; // appel de la classe
MFRC522 rfid(SS_PIN, RST_PIN);

#define PIN_LED_VERTE 8
#define PIN_LED_ROUGE 9

String key2[]={"d0 70 a2 25"};
String key1[]={"87 f4 b7 lc"};

void setup() { 
  Serial.begin(9600);
  SPI.begin(); // Init SPI bus
  rfid.PCD_Init(); // Init MFRC522 

  pinMode(PIN_LED_VERTE,OUTPUT);
  pinMode(PIN_LED_ROUGE,OUTPUT);

  // led eteintes a l'init
  digitalWrite(PIN_LED_VERTE,LOW);
  digitalWrite(PIN_LED_ROUGE,LOW);
}


void loop() {
  if ( ! rfid.PICC_IsNewCardPresent())
    return;

  if ( ! rfid.PICC_ReadCardSerial())
    return;

  String myKey= String(rfid.uid.uidByte[0],HEX) + " " + String(rfid.uid.uidByte[1],HEX) + " " + String(rfid.uid.uidByte[2],HEX) + " " + String(rfid.uid.uidByte[3],HEX);

  Serial.println(myKey);

  rfid.PICC_HaltA();
  rfid.PCD_StopCrypto1();
  
  if(key1[] == myKey){
    digitalWrite(PIN_LED_VERTE,HIGH);
  }
  
}

L'IDE me signale une erreur sur la ligne

if(key1[] == myKey){

Bientôt une semaine que je m'arrache les cheveux dessus, si quelqu'un a une idée je suis preneur !
Merci d'avance

Pour quoi key1 et key2 sont-ils des tableaux ?

String key2("d0 70 a2 25");
String key1("87 f4 b7 1c");
// ...
  if(key1 == myKey){

Si le processeur est pauvre en mémoire (UNO, NANO, etc.) je passerais plutôt par des C strings et strcmp.

const char key2[] = "d0 70 a2 25";
const char key1[] = "87 f4 b7 1c";
// ...
  char myKey[12];
  sprintf(myKey, "%02x %02x %02x %02x", rfid.uid.uidByte[0], rfid.uid.uidByte[1], rfid.uid.uidByte[2], rfid.uid.uidByte[3]);
  if (!strcmp(key1, myKey)){

Beaucoup plus efficace et économique en RAM.

Troisième solution : sans passer par des chaînes de caractères ASCII mais plutôt binaires :

const char key2[] = "\xd0\x70\xa2\x25";
const char key1[] = "\x87\xf4\xb7\x1c";

void loop() {

  if ( ! rfid.PICC_IsNewCardPresent())
    return;

  if ( ! rfid.PICC_ReadCardSerial())
    return;

  for (int i = 0 ; i < 4 ; i++) {
    Serial.print(rfid.uid.uidByte[i]);
  }
  Serial.println();

  rfid.PICC_HaltA();
  rfid.PCD_StopCrypto1();
 
  if (!memcmp(key1, rfid.uid.uidByte, 4)){
    digitalWrite(PIN_LED_VERTE,HIGH);
  }
}