RFID MFRC522 enviando dados entre dois arduinos

Olá! Sou novo aqui no fórum e iniciei a alguns meses em aplicações com arduino . Então estou tentanto mexer com vários shields e aplicações com a intenção de aprender.
E me deparei com o seguinte problema:
Quero fazer uma espécie de jogo usando o kit RFID MFRC522, onde ele fará leituras de tags em um arduino uno, e enviará os dados lidos, via serial, para um arduino mega que acenderá uma sequência especifica de leds.
Acontece que que eu consigo ler as tags, e transmitir a primeira das leituras…mas não consigo receber as demais leituras individuais no mega. E o jogo que gostaria de fazer se basearia na leitura individual de uma tag no arduino uno e o acendimento de leds em sua devida sequência no arduino mega.

// Código que estou usando no arduino UNO (onde está conectado o leitor RFID):

#include <SPI.h>
#include <MFRC522.h>
#include <SoftwareSerial.h>
 
# define SS_PIN 10
# define RST_PIN 9
MFRC522 mfrc522 (SS_PIN, RST_PIN); // Cria instância MFRC522.
 
char st [20];
 
void setup () 
{
  Serial.begin (9600); // Inicia um serial
  SPI.begin (); // ônibus Inicia SPI
  mfrc522.PCD_Init (); // Inicia MFRC522
  Serial.println ("Aproxima ao seu cartão do leitor ...");
  Serial.println ();
  
}
 
void loop () 
{
  // Procure por novos cartões
  if (! mfrc522.PICC_IsNewCardPresent ()) 
  {
    Retorna;
  }
  // Selecione um dos cartões
  if (! mfrc522.PICC_ReadCardSerial ()) 
  {
    Retorna;
  }
  // Mostra UID na serial
  Serial.print ("UID da tag:");
  String conteudo = "";
  byte letra;
  para (byte i = 0; i <mfrc522.uid.size; i ++) 
  {
     Serial.print (mfrc522.uid.uidByte [i] <0x10? "0": "");
     Serial.print (mfrc522.uid.uidByte [i], HEX);
     conteudo.concat (String (mfrc522.uid.uidByte [i] <0x10? "0": ""));
     conteudo.concat (String (mfrc522.uid.uidByte [i], HEX));
  }
  Serial.println ();
  Serial.print ("Mensagem:");
  conteudo.toUpperCase ();
  if (conteudo.substring (1) == "XX XX XX XX") 
  {
    Serial.println ();
    Serial.write ('A'); 
    delay(500);
    }
   if (conteudo.substring (1) == "YY YY YY YY") 
  {
     Serial.println ();
    Serial.write ('B'); 
    delay(500);
    }
 if (conteudo.substring (1) == "ZZ ZZ ZZ ZZ") 
  {
     Serial.println ();
    Serial.write ('C'); 
    delay(500);
    }
}

// Código que está no arduino mega (onde estão os leds):

void setup () {
pinMode (led25, OUTPUT); 
pinMode (led26, OUTPUT); 

pinMode (led27, OUTPUT); 

pinMode (led28, OUTPUT); 

pinMode (led29, OUTPUT); 

pinMode (led30, OUTPUT); 

pinMode (led31, OUTPUT); 

pinMode (led32, OUTPUT); 

pinMode (led33, OUTPUT); 

pinMode (led34, OUTPUT); 

pinMode (led35, OUTPUT); 



Serial3.begin (9600);

delay (500); 


digitalWrite(led25, LOW);
digitalWrite (led26, LOW);

digitalWrite (led27, LOW);

digitalWrite (led28, LOW);

digitalWrite (led29, LOW);

digitalWrite (led30, LOW);

digitalWrite (led31, LOW);

digitalWrite (led32, LOW);

digitalWrite (led33, LOW);

digitalWrite (led34, LOW);

digitalWrite (led35, LOW);


void loop () {
if (Serial3.available ()> 0) {
  char c = Serial.read ();    
    if (c == 'A') {      
        // Recebeu comando 
        digitalWrite (led27, HIGH);
        digitalWrite (led28, HIGH);
        digitalWrite (led29, HIGH);
        digitalWrite (led30, HIGH);
        digitalWrite (led31, HIGH);
        digitalWrite (led32, HIGH);
        delay(500);
    }
     if (c == 'B') {     
       // Recebeu comando 
        digitalWrite (led34, HIGH);
        delay(500);
        digitalWrite (led34, LOW);
        delay(500);
        digitalWrite (led35, HIGH);
        delay(500);
        digitalWrite (led35, LOW);
        delay(500);
        }

if (c == 'C') {     

       // Recebeu comando 

        digitalWrite (led32, LOW);

        delay(500);

        digitalWrite (led31, LOW);

        delay(500);

        digitalWrite (led30, LOW);

        delay(500);

        digitalWrite (led29, LOW);

        delay(500);

        }

     }
}

Desde já agradeço muito a atenção da comunidade! Obrigado

Como é que o mega consegue ler o primeiro comando, se não está a ler o que está a ser enviado?

if (Serial3.available ()> 0) { //vê se recebeu algo na porta 3
  char c = Serial.read ();    //lê da porta zero...

O teu arduino que envia os comandos também envia bastantes coisas que normalmente vão para a porta série do computador. Como tens tudo isto ligado?

Boa tarde amigo! Muito obrigado pelo retorno...

Na verdade a princípio são só os leds mesmo...eles estão nestas portas (25, 26, 27...apenas porque estou testando estas expansões do arduino mega, afim de aprender e experimentar), mas poderiam ser outras portas se achar melhor. Porque quanto ao hardware, só tenho os dois arduinos, os leds e o leitor rfid mfrc522 e 10 tags. O arduino uno envia apenas as informações da leitura rfid através da Serial 0. Usei a Serial 3 do mega, por conta de ter copiado este código da internet, e também porque futuramente pretendo adquirir um ESP e ligá-lo a serial 0 do mega, em uma aplicação de wifi ou algo assim...

Ahhh sim...quanto a sua citação:

"Como é que o mega consegue ler o primeiro comando, se não está a ler o que está a ser enviado?"

Eu não tinha percebido..mas provavelmente errei ao digitar o código aqui...na minha IDE está assim:

if (Serial3.available ()> 0) {
  char c = Serial3.read ();

Desculpe por este detalhe, e obrigado pela observação