Trasmettitore e ricevitore IR

Ciao a tutti, sto costruendo un progetto con arduino il quale comprende un ricevitore IR TSOP1738 e un LED trasmettitore IR (del tipo blu). Il mio obiettivo è quello di premere un tasto su un telecomando, arduino deve azionare un relè e trasmettere un codice IR ad un dispositivo. Ho però 2 problemi:

  1. ho caricato un sketch base per leggere i valori sulla seriale:
#include <IRremote.h> // use the library
int receiver = 11; // pin 1 of IR receiver to Arduino digital pin 11
IRrecv irrecv(receiver); // create instance of 'irrecv'
decode_results results;

void setup()
{
  Serial.begin(9600); // for serial monitor output
  irrecv.enableIRIn(); // Start the receiver
  pinMode(9, OUTPUT); // Pin 9 output
}
void loop()
{
  if (irrecv.decode(&results)) // have we received an IR signal?
  {
    Serial.println(results.value, HEX); // display it on serial monitor in hexadecimal
    irrecv.resume();// receive the next value
  }
   
}

Per alcun telecomandi alla semplice pressione di un pulsante compare una stringa di lettere e numeri, mentre per altri ogni volta che premo lo stesso tasto il valore cambia. Per qualsiasi telecomando se tengo premuto il tasto visualizzo sempre una stringa con tutte FFFFFFFFF

  1. Non riesco in alcun modo a trasmettere un codice IR. Ho provato vari modi per trasmettere un IR come ad esempio utilizzare:
for (int i = 0; i < 3; i++) {
    irsend.sendSony(0xa90, 12); // Sony TV power code
    delay(100);

il LED si illumina (visto con la fotocamera del telefono) ma il televisore non rileva il comando. Per completezza vorrei comandare un Home Theater Onkyo ed un pannello LED dotato di telecomando IR.

Potete consigliarmi come procedere? Grazie!

Ho risolto il secondo problema mentre per il primo (valori sempre uguali a FFFFFFFF se tengo premuto il pulsante) rimane invariato.
Ho scritto il seguente sketch (riporto solo la parte del loop):

void loop() { 
 if (irrecv.decode(&results)) {Serial.println(results.value, HEX); irrecv.resume();}
if ( (results.value == 0xFFA25D ) &&(stato_giradischi ==0)){digitalWrite(giradischi, LOW);stato_giradischi =1;}
if (( results.value == 0xFFA25D )&&(stato_giradischi ==1)) {digitalWrite(giradischi, HIGH);stato_giradischi =0;

}}

funziona correttamente solo che quando premo il pulsante sul telecomando lo stato del pin varia molto velocemente ed in modo casuale. Avevo pensato di inserire una temporizzazione in modo da bloccare il pin per un certo periodo di tempo prima che possa ricambiare stato, ma non ci riesco (ovviamente utilizzando la funzione millis).
Non so se sono stato chiaro, potete darmi un consiglio per far funzionare il tutto?
Grazie.