Controllo uscite con input radio e infrarosso

Salve,
Mi sono bloccato...
Sto cercando di comandare le uscite di arduino tramite segnali IR e RC.

Finora riesco a decodificare i segnali tramite monitor seriale sia IR che RC, comandare le uscite con IR ma mi sono bloccato quando cerco di comandare le uscite con RC.

La mia intenzione sarebbe quella di comandare le uscite disponibili, potendo modificare solo il codice decodificato, semplicemente inserendolo nel programma senza dover dividere le uscite fra quelle comandabili da IR o RC e senza fare grandi variazioni al programma, ma semplicemente cambiare il codice decodificato.

#include <IRremote.h>
#include <RCSwitch.h>

const byte pin22 = 22;
const byte pin23 = 23;
const byte pin24 = 24;
const byte pin25 = 25;
const byte pinIR = 11;
IRrecv irrecv(pinIR);
RCSwitch mySwitch = RCSwitch();

decode_results results;
unsigned long prevMillis=0;
unsigned long Intervallo=0;
int Stato=0;

void setup()
{ delay(1000);
  Serial.begin(9600); 
  irrecv.enableIRIn(); 
  mySwitch.enableReceive(0);  
  pinMode(pin22, OUTPUT); 
  pinMode(pin23, OUTPUT);
  pinMode(pin24, OUTPUT); 
  pinMode(pin25, OUTPUT); 
   

}

void loop()
{ 
  if (irrecv.decode(&results)) 

  { Serial.println(results.value, HEX); 
    if ( results.value == 0x38863BE0  )  // tasto 1 telecomando DICOM
    { prevMillis=millis();
      Stato=1;
      digitalWrite(pin22, HIGH);   
      delay(1000);
      digitalWrite(pin22, LOW);
    }

      if ( results.value == 12845399  )  //tasto 1 radiocomando MFT-26-2 -20100001-
    { prevMillis=millis();
      Stato=1;
      digitalWrite(pin23, HIGH);   
      delay(1000);
      digitalWrite(pin23, LOW);
    }

       if ( results.value == 0xFF7A85  )  //tasto 3  telecomando MP3
    { prevMillis=millis();
      Stato=1;
      digitalWrite(pin24, HIGH);   
      delay(1000);
      digitalWrite(pin24, LOW);
    }

       if ( results.value == 0x38863BC8  )  //tasto 4  telecomando DICOM
    { prevMillis=millis();
      Stato=1;
      digitalWrite(pin25, HIGH);   
      delay(30);
      digitalWrite(pin25, LOW);
    }
    
    
    irrecv.resume();
 } 


  if (mySwitch.available()) {
   
    int value = mySwitch.getReceivedValue();
   
    if (value == 0) {
      Serial.print("Unknown encoding");
    } else {
      Serial.print("Received ");
      Serial.println( mySwitch.getReceivedValue() );
      
    }
 
    mySwitch.resetAvailable();
  }
}

Solo il pin 23 che riceve il comando tramite RC non attiva l'uscita.
Mentre in IR funziona tutto.

Grazie

ma su che pin hai collegato l'ingresso del segnale proveniente dal ricevitore RC ?

Pin 2

ed e' questo il codice che riceve dal telecomando ?

if ( results.value == 12845399  )  //tasto 1 radiocomando MFT-26-2 -20100001-
    { prevMillis=millis();
      Stato=1;
      digitalWrite(pin23, HIGH);   
      delay(1000);
      digitalWrite(pin23, LOW);
    }

esatto,

il codice che riceve e che vedo sul monitor seriale è 12845399

e allora perchè

  1. lo hai inserito all'interno del controllo IR ?
  if (irrecv.decode(&results)) { 
 .......
  if( results.value == 12845399  )  //tasto 1 radiocomando MFT-26-2 -20100001-
    ...
  1. come puoi sperare che una variabile che si chiama value ( quela che ottieni dal RC )
    possa diventare results.value ( quella che confronti )

Quindi, inserisci il confronto non all'interno dell' if IR, ma dopo aver letto l'RC