comando remoto ir

Quello che vuoi fare è un pò un casino.
Prima di tutto bisogna sapere se il tuo telecomando, quando tieni premuto di continuo lo stesso tasto, invia di continuo lo stesso codice oppure 0xFFFFFFF.

Alcuni consigli:

  • alla fine delle graffe chiuse degli else il punto e virgola è inutile
  • all'inizio della setup() è utile, se si spediscono dati al pc attraverso la seriale (Serial) mettere un ritardo di 1 secondo
  • queste MCU hanno poca memoria, non è Visual Basic su PC con molta ram. Perciò evita se puoi le String.
    Nel tuo codice è molto più semplice usare una variabile numerica (byte) e dichiarare due costanti mnemoniche.
#include <IRremote.h>

const byte LED_PIN  = 13;
const byte RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
#define K_SPENTO 0
#define K_ACCESO 1
byte stato=K_SPENTO;

void setup()
{ delay(1000);
  pinMode(LED_PIN, OUTPUT);
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

void loop()  {
  if ( irrecv.decode(&results) )  {
    Serial.println(results.value); 
    if (results.value == 1906441864) {
      stato = K_ACCESO;
    }
    else if (results.value == 3672802284) { 
      stato = K_SPENTO; 
    }
    
    if(stato == K_ACCESO) { 
      digitalWrite(LED_PIN, HIGH); 
    }
    else if (stato == K_SPENTO)  {
      digitalWrite(LED_PIN, LOW);  
    }    
    irrecv.resume(); // Receive the next value
  }
}