Duda con iteración en ciclo for y uso de variables

Estimados,
Buenas tardes a todos, he optado por plantear mi duda aquí dado que ya he probado todo lo que se me ha ocurrido y no logro acertarle.

A ver si me pueden dar algo de luz y logró dejar andando esto.

El problema lo tengo dentro de un ciclo for en el cual necesito incrementar el valor de el entero +1 en cada ciclo, pero que ese mismo numero entero sea usado para hacer una comparativa entre dos arrays.

Algo más o menos asi

for (int i=0; i <= 3; i++)
        {
        If (Comparearray(ActualUID,Usuarioi))
        Serial.println("Acceso concedido);
        Else 
        Serial.println("Acceso denegado");
        }

El problema es que no logro juntar la variable incremental i con la palabra "usuario", de modo que en cada ciclo la evaluacion se haga lo siguiente
ActualUID,Usuario1
ActualUID,Usuario2

ActualUID,Usuario3

Pueden comentarme si es factible lo que quiero hacer?

Desde ya muchas gracias.

PD: me comentan si hay algo mal en mi post para corregirlo, un abrazo!

No lo acabo de entender ,pero si lo que quieres es comparar el contenido de la misma posicion en dos array diferentes y suponiendo que el tipo de datos es el mismo ,por ejemplo numerico:

for (int i=0; i <= 3; i++){
   if (array1[i] == array2[i]){
      Serial.println("Acceso concedido);
   } else {
      Serial.println("Acceso denegado");
   }
}

Por cierto repasa las normas del foro para saber como adjuntar codigo.

Estimado Jose,
Antes que todo gracias por tomarte el tiempo para responder, la verdad es que la comparación entre dos arrays ya me funciona, es basada en un código que está probado, el problema es que cada comparación se hace con un "if" diferente. Por lo que comparar el dato base contra sesenta posibles significaria escribir 60 condicionantes... (En el caso del ejemplo que adjunto son solo dos Usuario1 y Usuario2)

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

#define RST_PIN	9    //Pin 9 para el reset del RC522
#define SS_PIN	10   //Pin 10 para el SS (SDA) del RC522
MFRC522 mfrc522(SS_PIN, RST_PIN); ///Creamos el objeto para el RC522

void setup() {
	Serial.begin(9600); //Iniciamos La comunicacion serial
	SPI.begin();        //Iniciamos el Bus SPI
	mfrc522.PCD_Init(); // Iniciamos el MFRC522
	Serial.println("Control de acceso:");
}

byte ActualUID[4]; //almacenará el código del Tag leído
byte Usuario1[4]= {0x4D, 0x5C, 0x6A, 0x45} ; //código del usuario 1
byte Usuario2[4]= {0xC1, 0x2F, 0xD6, 0x0E} ; //código del usuario 2
void loop() {
	// Revisamos si hay nuevas tarjetas  presentes
	if ( mfrc522.PICC_IsNewCardPresent()) 
        {  
  		//Seleccionamos una tarjeta
            if ( mfrc522.PICC_ReadCardSerial()) 
            {
                  // Enviamos serialemente su UID
                  Serial.print(F("Card UID:"));
                  for (byte i = 0; i < mfrc522.uid.size; i++) {
                          Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
                          Serial.print(mfrc522.uid.uidByte[i], HEX);   
                          ActualUID[i]=mfrc522.uid.uidByte[i];          
                  } 
                  Serial.print("     ");                 
                  //comparamos los UID para determinar si es uno de nuestros usuarios  
                  if(compareArray(ActualUID,Usuario1))
                    Serial.println("Acceso concedido...");
                  else if(compareArray(ActualUID,Usuario2))
                    Serial.println("Acceso concedido...");
                  else
                    Serial.println("Acceso denegado...");
                  
                  // Terminamos la lectura de la tarjeta tarjeta  actual
                  mfrc522.PICC_HaltA();
          
            }
      
	}
	
}

//Función para comparar dos vectores
 boolean compareArray(byte array1[],byte array2[])
{
  if(array1[0] != array2[0])return(false);
  if(array1[1] != array2[1])return(false);
  if(array1[2] != array2[2])return(false);
  if(array1[3] != array2[3])return(false);
  return(true);
}

Lo que busco evitar con lo que intente poner más arriba es que en ver de poner 60 condiciones solamente se haga la comparación entre el array base y usuariox (con x cómo variable incremental) en el fondo que x vaya aumentando en 1 con cada ciclo, de esa forma podría hacer solo un if que vaya comparando cada usuario (usuario0 a usuario 59)

ActualUID,Usuario0
ActualUID,Usuario1
ActualUID,Usuario2
ActualUID,Usuario3
...
ActualUID,Usuario56
ActualUID,Usuario57
ActualUID,Usuario58
ActualUID,Usuario59

No sé si soy del todo claro

En Arduino no puedes hacer eso, aún que si se puede hacer en otros lenguajes de programación

Lo que puedes hacer en Arduino crear un array Dr arrays y hacer refencia a él como

Usuarios [i][j];

Donde la i iria de 0 a 59 y la j de 0 a 3 que es la contenida cada byte del uuid

Lo defines como:

byte Usuarios[60][4];

Y la comparación sería:

Comparearray(ActualUID,Usuarios[i]);

Ahora lo entiendo,si hubieras puesto el codigo completo de un principio nos hubieramos ahorrado suposiciones...
Go_zalo ya te ha dado una solucion,pero tendras que modificar la funcion de comparar arrays.Ahora no puedo probar ,pero una idea:

#define TOTAL_USERS 3 // cambiar por 60

byte usuarios[3][4] = { // cambiar por 60
  {0x4D,0x5C,0x6A,0x45},
  {0xC1,0x2F,0xD6,0x0E},
  {0xC2,0x3F,0xD6,0x0B} // ejemplo  3 usuarios como te puso Go_zalo con array 2 dimensiones
};

boolean userLogged(byte uuid[]){
  for(byte numUsers=0;numUsers < TOTAL_USERS;numUsers ++){
    byte equal = 0;
    for(byte posUuid = 0;posUuid < 4;posUuid ++){
      if(uuid[posUuid] == usuarios[numUsers][posUuid]){
        equal++;
      } else {
        break;
      }
    }
    if(equal == 4){return true;}
  }
  return false;
}
void setup() {
  Serial.begin(9600);
  byte uuid1[4] = {0xCC,0x3F,0x0C,0xD6};
  byte uuid2[4] = {0xC1,0x2F,0xD6,0x0E};
  byte uuid3[4] = {0x3F,0x45,0x4D,0xAA};
  byte uuid4[4] = {0xC2,0x3F,0xD6,0x0B};
  byte uuid5[4] = {0x4D,0x5C,0x6A,0x45};
  Serial.println(userLogged(uuid1)); // Deberia imprimir 0
  Serial.println(userLogged(uuid2)); // Deberia imprimir 1
  Serial.println(userLogged(uuid3)); // Deberia imprimir 0
  Serial.println(userLogged(uuid4)); // Deberia imprimir 1
  Serial.println(userLogged(uuid5)); // Deberia imprimir 1
 

}

void loop() {

}

@Go_zalo
Entonces en el lenguaje de Arduino no es posible hacer esto de esa manera, (era un recurso que ocupaba mucho en otros lenguajes) lo tendré presente.

Gracias por tomarte el tiempo en leer y escribir, y por la idea entregada, voy a trabajar en esto y comento la solución.

@jose
Definitivamente creo que era mucho más fácil de exponer la idea con el código completo, gracias igualmente por el tiempo dedicado y por las ideas, (no me digas que improvisaste todo ese código así de la nada, qué crack eres que eres!)

Nuevamente muchas gracias y como comenté arriba, trabajaré en resolver esto y luego escribiré la conclusión!

Un abrazo, saludos.

Yo creo que su función de comparación de arrays seguira funcionando, ya que recibe igualmente dos arrays, por que se le está enviando según mi proposición solamente un fila del array cada vez

No solo eso sino es más óptima que la tuya, ya que cuando encuentra una discrepancia evita seguir comparando

es posible ,no lo voy a comprobar,pero tampoco mucho mas,tambien sale de la comprobacion con el break en el momento que un elemento del array no es igual y deja de comprobar cuando encuentra una combinacion correcta.

jose:
es posible ,no lo voy a comprobar,pero tampoco mucho mas,tambien sale de la comprobacion con el break en el momento que un elemento del array no es igual y deja de comprobar cuando encuentra una combinacion correcta.

Tienes razón también deja de comprobar la tuya no lo había visto bien

Estimados @Go_zalo y @jose,
Nuevamente quiero agradecer el tiempo y la ayuda dedicada, finalmente durante estos últimos dos días tuve tiempo de revisar sus ideas, tratar de entender en que estaba mal y adaptarlas a lo que mis conocimientos y necesidades requerían, despues de mucho ensayo-error lo he conseguido.

Muchas gracias porque es muy probable que sin su ayuda no lo hubiera conseguido.

Como prometí adjunto el código pues quizás puede ser útil para alguien más.

#include <SPI.h>
#include <MFRC522.h>
#define TOTAL_USERS 20 // Indica el total de usuarios 
#define RST_PIN  9    //Pin 9 para el reset del RC522
#define SS_PIN  53   //Pin 10 para el SS (SDA) del RC522
MFRC522 mfrc522(SS_PIN, RST_PIN); ///Creamos el objeto para el RC522

void setup() {
  Serial.begin(9600); //Iniciamos La comunicacion serial
  SPI.begin();        //Iniciamos el Bus SPI
  mfrc522.PCD_Init(); // Iniciamos el MFRC522
  Serial.println("Control de acceso:");
}

byte ActualUID[4]; //almacenará el código del UUID del RFID leído

byte usuarios[20][4] = { // arreglo de 20 usuarios
  {0xC1,0x2F,0xD6,0x0E},
  {0xC1,0x2F,0xD6,0x0E},
  {0xC2,0x3F,0xD6,0x0B},
  {0xC1,0x2F,0xD6,0x0E},
  {0xC2,0x3F,0xD6,0x0B},
  {0xC1,0x2F,0xD6,0x0E},
  {0xC2,0x3F,0xD6,0x0B},
  {0xC1,0x2F,0xD6,0x0E},
  {0xC2,0x3F,0xD6,0x0B},
  {0xC1,0x2F,0xD6,0x0E},
  {0xC2,0x3F,0xD6,0x0B},
  {0xC1,0x2F,0xD6,0x0E},
  {0x59,0xc0,0xe3,0x76},
  {0xC1,0x2F,0xD6,0x0E},
  {0xC2,0x3F,0xD6,0x0B},
  {0xC1,0x2F,0xD6,0x0E},
  {0xC2,0x3F,0xD6,0x0B},
  {0x30,0x31,0x26,0x83},
  {0xC2,0x3F,0xD6,0x0B},
  {0x39,0x8c,0x1e,0xd9}};
  
void loop() {
  // Revisamos si hay nuevas tarjetas  presentes
  if ( mfrc522.PICC_IsNewCardPresent()) 
        {  
      //Seleccionamos una tarjeta
            if ( mfrc522.PICC_ReadCardSerial()) 
            {
                                  delay(1000);
              
                  // Enviamos serialemente su UID
                  Serial.print(F("Card UID:"));
                  for (byte i = 0; i < mfrc522.uid.size; i++) {
                          Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
                          Serial.print(mfrc522.uid.uidByte[i], HEX);   
                          ActualUID[i]=mfrc522.uid.uidByte[i];          
                  } 
                  Serial.println("     ");                 
                  //comparamos los UID para determinar si es uno de nuestros usuarios  
                  
                  for(byte numUsers=0;numUsers < TOTAL_USERS;numUsers ++)
                    {     
                     Serial.print("Evaluacion de usuario N: ");
                     Serial.println(numUsers);  //muestra en el monitor el N de usuario evaluado  
                     byte equal = 0;
                     for(byte posUuid = 0;posUuid < 4;posUuid ++)
                      {
                      if(ActualUID[posUuid] == usuarios[numUsers][posUuid])
                        {
                        Serial.print("Evaluacion de array N: ");
                        Serial.print(posUuid);
                        Serial.println(" OK"); //muestra en el monitor el N de array evaluado 
                        equal++;
                        } 
                      else 
                        {
                         break;
                        }
                     }
                      if(equal == 4)
                         {
                          Serial.println("Acceso concedido..."); //muestra en el monitor si se realiza un match 
                          return true;
                          }
                    }
                    Serial.println("Acceso denegado..."); //muestra en el monitor si no se realiza un match 
                    return false;
                    
                  // Terminamos la lectura de la tarjeta tarjeta  actual
                  mfrc522.PICC_HaltA();
          
            }
      
  }
  
}

PD: hice lo que pude con el código, quizás no es lo más optimo pero funciona! @Admin Con esto podemos dar el caso por CERRADO y SOLUCIONADO!

Saludos a todos en el foro!