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...