RFID Byte Array für 10 Karten oder mehr

Hallo Leute
Ich habe mir mal ein Beispiel für den MFRC522 Sensor installiert.
Funktioniert perfekt.
Wie könnte ich jetzt die Erkennung auf x Karten erweitern?
Hier die Arrays für die jeweiligen Karten

//////// ID der RFID-Tags //////////////
byte card1[] = {0x6B, 0x9A, 0x3B, 0x0B};
byte card2[] = {0x89, 0xFC, 0x4F, 0x47};
byte card3[] = {0x99, 0x41, 0x40, 0x56};

und hier die Überprüfung auf Gültigkeit der Karten

//////////////////////////////////////////////////
//
// acceptedRFID()
//   Stimmt gelesene RFID
//   mit der voreingestellten ID ueberein?
//
//////////////////////////////////////////////////
bool acceptedRFID(byte uid[4]) {
  return
      ((rfidReader.uid.uidByte[0] == card1[0]) &&
      (rfidReader.uid.uidByte[1] == card1[1]) &&
      (rfidReader.uid.uidByte[2] == card1[2]) &&
      (rfidReader.uid.uidByte[3] == card1[3]))
      ||
      ((rfidReader.uid.uidByte[0] == card2[0]) &&
      (rfidReader.uid.uidByte[1] == card2[1]) &&
      (rfidReader.uid.uidByte[2] == card2[2]) &&
      (rfidReader.uid.uidByte[3] == card2[3]))
      ||
      ((rfidReader.uid.uidByte[0] == card3[0]) &&
      (rfidReader.uid.uidByte[1] == card3[1]) &&
      (rfidReader.uid.uidByte[2] == card3[2]) &&
      (rfidReader.uid.uidByte[3] == card3[3]));
}

Lässt sich die Funktion acceptedRFID nicht etwas komfortabler gestalten, damit ich bei einer neuen Karte diesen Rattenschwanz nicht noch mehr verlängern muss?

Schon mal besten Dank im Voraus

Schau Dir mal mehrdimensionale Arrays an.

Gruß Tommy

so?

byte cards[][4] = { {0x6B, 0x9A, 0x3B, 0x0B}, {0x89, 0xFC, 0x4F, 0x47}, {0x99, 0x41, 0x40, 0x56} };
uint8_t sizeOfCards = sizeof(cards[0]);

bool acceptedRFID(byte uid[4]) {
for (uint8_t i = 0; i < sizeOfCards; i++) {
return (
(rfidReader.uid.uidByte[0] == cards*[0]) &&*
_ (rfidReader.uid.uidByte[1] == cards*[1]) &&_
_ (rfidReader.uid.uidByte[2] == cards[2]) &&
(rfidReader.uid.uidByte[3] == cards[3])
);
}
}*

geht aber nur für die erste Karte im Array.
Alle anderen werden nicht erkannt._

So muss das aussehen, dann klappt's auch mit dem Nachbarn.

bool acceptedRFID(byte uid[4]) {
  bool result = false;
  for (uint8_t i = 0; i < sizeOfCards; i++) {
    byte detected[] = {
      rfidReader.uid.uidByte[0], rfidReader.uid.uidByte[1], rfidReader.uid.uidByte[2],   rfidReader.uid.uidByte[3]};

    if (memcmp(detected, cards[i], sizeof(detected)) == 0) {
      result = true;
      break;
    }
  }
  return result;
}

Vorher wurde das Array nicht bis zu Ende durchsucht sondern die for Schleife schon nach dem ersten Check verlassen.

StackExchange hat wieder mal geholfen.