(Solucionado) Guardar Codigo RF

Hola, estoy usando la libreria RCSwitch.h para un proyecto con mandos a distacia rf 433mhz pero no consigo guardar el codigo que recibo del mando en una variable para usarlo posteriormente en el resto de la programacion, os dejo aqui el codigo a ver si alguien sabe donde esta el fallo, en este codigo solo se ejecuta la segunda condicion, creo que tiene que ver con el tipo de variable pero he probado varias y nada

Gracias un saludo.

#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();

int value = 0;

void setup() {
Serial.begin(9600);
Serial.print("Serial Started ");
mySwitch.enableReceive(0);
}

void loop() {
  
  if (mySwitch.available()) {

    value = mySwitch.getReceivedValue();
    
    if (value == 5592323) {  // Condicion que nunca se cumple
      Serial.print("  Primera condicion ");
    } 
    
    if (mySwitch.getReceivedValue() == 5592323) {   // Condicion que si se cumple
      Serial.print("  Segunda condicion ");
    }
    
    Serial.println("");
  }
}

Materiales:

  • Arduino uno.
  • Receptor RF.
  • Mando basado en IC PT2262

creo que te hace falta redactar un poco mejor tu duda, amm y mi duda es, por que quieres evaluar una condición que nunca va a suceder?
entonces si no mal entiendo tu problema es, enviar un dato por RF, este dato lo quieres almacenar en tu programa para despues?
el problema es que en realidad no saber que dato estas recibiendo ? (osea si es el mismo que estas enviando?)
saludos.

Creo que no he dicho nada de enviar codigos pero bueno.

A ver, tengo un mando rf433mhz, usando la libreria RCSwitch.h y el ejemplo ReceiveDemo_simple, por el puerto serie puedo ver que codigo recibe el arduino con cada boton, con el boton 1 en el monitor aparece el codigo "5592323", el problema es el siguiente:

Si uso esta condicion, entramos dentro del if perfectamente y me imprime en el monitor serie "segunda condicion"

void loop() {
 
  if (mySwitch.available()) {
   
    if (mySwitch.getReceivedValue() == 5592323) {
      Serial.print("  Segunda condicion ");
    }
   
  }
}

Pero si intento guardar el valor en "int value" y luego la comparo, parece que la condicion nunca se cumple.

void loop() {
 
  if (mySwitch.available()) {

    value = mySwitch.getReceivedValue();
   
    if (value == 5592323) {
      Serial.print("  Primera condicion ");
    }
   
  }
}

Este es el mando:

Remote-Control.jpg

Remote-Control.jpg

Porque un valor como 5592323 supera a un entero con signo o incluso a un entero sin signo.
Debes usar unsigned long para definir la variable que lo contenga.

En lugar de

int value = 0;

definelo asi

unsigned long value = 0;

ok en este ejemplo funciona lo probare en el codigo original a ver que pasa

Solucionado, estaba usando solamente long, la que necesitaba es unsigned long