Eu não me devo ter explicado bem...
Quando testas e mandas o sinal do comando para o Arduino que recebe e envia, o outro arduino que só recebe também parece estar a receber os dados.
O que eu pedi foi para tentares evitar que esse Arduino (o que só recebe) consiga ver o comando dado pelo controlo remoto. Isto para despistar... e garantires que o teu Arduino apenas está a receber de uma fonte, ou seja, do Arduino que envia.
Quanto ao noInterrupts, tira-a daí... Ela não está a fazer nada relativamente ao envio de dados. A função send não é bufferizada, logo quando essa função noInterrupts corre a função de send já terminou.
No entanto... e como tu não te deste ao trabalho de ler as instruções dessa função... ao usá-la sem o equivalente interrupts(), basicamente estás a colocar o Arduino parado. E depois ou é a função delay() ou é a função irsend que necessitam de interrupções e tu tem-las todas desligadas e o código bloqueia à espera.
Logo, há algo aqui que não está a bater certo e os teus métodos de teste estão-me a deixar desconfiado que terá algo a ver com isso e não necessariamente o código.
Ainda não explicaste que comando estás a usar... é o da TV?? Os dos Ares condicionados são um pouco diferentes...
Só para terminar... temos estado a falar do exemplo IRReceive... tu estás a usar o IRdump... que é bastante diferente...
Que tal se usares o IRReceive assim no Arduino que só recebe:
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume(); // Receive the next value
}
}
Como tinha referido antes... ao usares o IRDump vais activar a porta série... ou seja, enquanto o teu Arduino está à espera de receber dados, vai estar também a mandá-los para a porta série. A porta série usa interrupções e como tal é provável que o outro Arduino esteja a enviar correctamente e o teu de recepção não receba correctamente...
Podes isolar o Arduino só de recepção do teu comando remoto e testar... ou então dar uma temporização entre o comando remoto e o outro Arduino.