Problema ao Enviar e Receber IR no mesmo Arduino

Então sem saber exactamente o que testaste...

Um arduino com o receptor tem o exemplo do IR Receive, correcto? Este será sempre usado em todos os testes.
Antes de fazeres qualquer teste, prova que o hardware está a funcionar.
Para isso faz load do exemplo IR Receive no arduino que recebe e transmite e vê se ele recebe do teu comando.

Se ele receber, faz load do programa para envio e envia para o outro arduino que vai receber. Se tudo isto funcionar, sabes que o teu hardware está bom.

Depois colocas este código no Arduino que recebe e envia:

#include <IRremote.h>
int RECV_PIN = 12;
IRrecv irrecv(RECV_PIN);
decode_results results;
IRsend irsend;
void setup()
{
  irrecv.enableIRIn(); 
  Serial.begin(9600);
}

long int decCode = 0;

void loop() {

  if(irrecv.decode(&results)) {
    decCode = results.value;
    Serial.println(decCode, HEX);
    irrecv.resume();
  }

  if (decCode == 0xFF629D) {

    Serial.println("Codigo Recebido");
    Serial.println("Modo de Transmissao");

    for (int i = 0; i < 4; i++) {
      irsend.sendNEC(0xAF518E7, 32);
      Serial.print("Enviado: ");
      Serial.println(i+1);
      delay(50);
    }

    Serial.println("Receptor ativado");
    irrecv.enableIRIn();
    decCode = 0;
  }

}

Vê o que recebes no outro Arduino. Se não funcionar... Tenta isto:

#include <IRremote.h>
int RECV_PIN = 12;
IRrecv irrecv(RECV_PIN);
decode_results results;
IRsend irsend;
void setup()
{
  irrecv.enableIRIn(); 
  Serial.begin(9600);

//isto diz como está a configuração antes... 
Serial.println("Setup");
Serial.print ("TCCR0A "); 
Serial.println(TCCR0A, HEX); 
Serial.print ("TCCR0B "); 
Serial.println(TCCR0B, HEX);
Serial.print ("TIMSK0 "); 
Serial.println(TIMSK0, HEX); 

Serial.print ("TCCR2A "); 
Serial.println(TCCR2A, HEX); 
Serial.print ("TCCR2B "); 
Serial.println(TCCR2B, HEX);
Serial.print ("TIMSK2 "); 
Serial.println(TIMSK2, HEX); 


}

long int decCode = 0;

void loop() {

  if(irrecv.decode(&results)) {
    decCode = results.value;
    Serial.println(decCode, HEX);
Serial.println("Decoded");
Serial.print ("TCCR0A "); 
Serial.println(TCCR0A, HEX); 
Serial.print ("TCCR0B "); 
Serial.println(TCCR0B, HEX);
Serial.print ("TIMSK0 "); 
Serial.println(TIMSK0, HEX); 

Serial.print ("TCCR2A "); 
Serial.println(TCCR2A, HEX); 
Serial.print ("TCCR2B "); 
Serial.println(TCCR2B, HEX);
Serial.print ("TIMSK2 "); 
Serial.println(TIMSK2, HEX); 

    irrecv.resume();
Serial.println("Resume");
Serial.print ("TCCR0A "); 
Serial.println(TCCR0A, HEX); 
Serial.print ("TCCR0B "); 
Serial.println(TCCR0B, HEX);
Serial.print ("TIMSK0 "); 
Serial.println(TIMSK0, HEX); 

Serial.print ("TCCR2A "); 
Serial.println(TCCR2A, HEX); 
Serial.print ("TCCR2B "); 
Serial.println(TCCR2B, HEX);
Serial.print ("TIMSK2 "); 
Serial.println(TIMSK2, HEX); 

  }

  if (decCode == 0xFF629D) {

    Serial.println("Codigo Recebido");
    Serial.println("Modo de Transmissao");

//    for (int i = 0; i < 4; i++) {
Serial.println("beofre send");
Serial.print ("TCCR0A "); 
Serial.println(TCCR0A, HEX); 
Serial.print ("TCCR0B "); 
Serial.println(TCCR0B, HEX);
Serial.print ("TIMSK0 "); 
Serial.println(TIMSK0, HEX); 

Serial.print ("TCCR2A "); 
Serial.println(TCCR2A, HEX); 
Serial.print ("TCCR2B "); 
Serial.println(TCCR2B, HEX);
Serial.print ("TIMSK2 "); 
Serial.println(TIMSK2, HEX); 

      irsend.sendNEC(0xAF518E7, 32);

Serial.println("After send");
Serial.print ("TCCR0A "); 
Serial.println(TCCR0A, HEX); 
Serial.print ("TCCR0B "); 
Serial.println(TCCR0B, HEX);
Serial.print ("TIMSK0 "); 
Serial.println(TIMSK0, HEX); 

Serial.print ("TCCR2A "); 
Serial.println(TCCR2A, HEX); 
Serial.print ("TCCR2B "); 
Serial.println(TCCR2B, HEX);
Serial.print ("TIMSK2 "); 
Serial.println(TIMSK2, HEX); 

      Serial.print("Enviado: ");
      Serial.println(i+1);
      delay(50);
//    }

    Serial.println("Receptor ativado");
    irrecv.enableIRIn();
Serial.println("AfterEnable");
Serial.print ("TCCR0A "); 
Serial.println(TCCR0A, HEX); 
Serial.print ("TCCR0B "); 
Serial.println(TCCR0B, HEX);
Serial.print ("TIMSK0 "); 
Serial.println(TIMSK0, HEX); 

Serial.print ("TCCR2A "); 
Serial.println(TCCR2A, HEX); 
Serial.print ("TCCR2B "); 
Serial.println(TCCR2B, HEX);
Serial.print ("TIMSK2 "); 
Serial.println(TIMSK2, HEX); 

    decCode = 0;
  }

}

Isto poderá dar alguma pista.... ou pelo menos garantir que não tem nada a ver com a função de enable, etc...