PROBLEMAS CON RCSWITCH

Buenas a todos,

este es mi primer proyecto de Arduino y ando algo perdido la verdad, he querido hacer el siguiente proyecto , para poder activar un servo con mi mando de garaje:

El caso es que para nada el resultado es el del vídeo, seguramente haga algo mal, le he escrito al autor pero no me contesta.

Yo estoy utilizando un ARDUINO UNO, y un receptor a 433 Mhz que es el C218D001C. El conector data sale al pin 2 de Arduino, nombrado TX, en cuanto ejecuto el programa y pulso cualquier mando del garaje no pasa nada en el serial monitor, pero si dejo pulsado el botón físico que ya trae el Arduino, entonces el serial monitor ya empieza a recibir información, salen caracteres aleatorios de todo tipo, pulso entonces la el botón del mando y recibo un patrón de caracteres aleatorios más unidos y parecidos cada vez que pulso el botón del mando, pero nunca exactamente iguales.

Uno puede pensar, o al menos yo, que la librería del RcSwith no comprende los datos de los mandos que utilizo, pero el caso es que programa está diseñado para que en estos casos de un mensaje de error concreto en el monitor serial.

Por tanto lo que yo pienso es que cuando pulso el botón físico del arduino, éste empieza a recibir datos por doquier sin almacenarlos en las diferentes variables o protocolos de ningún tipo, no sé.....no lo veo claro.

Agradecería alguna idea o ayuda.

Saludos a todos :slight_smile:

**Bienvenido al foro @Flash1983. **
Te invito a que leas las normas del foro y luego edites tu primer post porque esto asi

https://www.youtube.com/watch?v=Ym5ytQJ3Iuc

esta mal.
Debe verse de este modo.
https://www.youtube.com/watch?v=Ym5ytQJ3Iuc

Ahora te respondo: no veo el código, algo que hubieras incluído de haber leído las normas.
Recuerda que también requiere el uso del tag correspondiente para códigos.
Mira otros hilos para darte cuenta.
Luego edita y corrige lo indicado y si quieres en un nuevo post, agrega el código.

Gracias Surbyte por las correciones, ya he editado el primer post y a continuación detallo el código que estoy intentando hacer funcionar, quedo a la espera de vuestros comentarios.

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup()
{
  pinMode(13,OUTPUT);
  Serial.begin(1200);
  mySwitch.enableReceive(1);  // pin #2 de arduino como RX
}

void loop()
{
  if (mySwitch.available())
  {
    long  int value = mySwitch.getReceivedValue();//en la libreria biene int
    if (value == 0) 
    {
      Serial.println("error de codigo");
    } 
    else 
    {
      Serial.print("codigo Recibido");
      Serial.println(value);
     // Serial.println( mySwitch.getReceivedValue() );
      //////////compara dato recibido
      if(value == "¶’")
        {
          digitalWrite(13,HIGH);
          Serial.println("led on");  //ENVIO AL PC EL CODIGO
          delay(5000);
        }
        //////////compara dato recibido
        if(value == "¶’")

        {
          digitalWrite(13,LOW);
          Serial.println("led OFF");  //ENVIO AL PC EL CODIGO
        }
        ///////////////
        if(value == 14543169)//control remoto rojo
        {
          digitalWrite(13,HIGH);
          Serial.println("led OFF");  //ENVIO AL PC EL CODIGO
        }
        if(value == 14543170)//apago led

        {
          digitalWrite(13,LOW);
          Serial.println("led OFF");  //ENVIO AL PC EL CODIGO
        }
        

        ///////////////
    }//else
    

    mySwitch.resetAvailable();
  }//if
}//void

Según la librería RC-SWITCH debes usar int no long int

int value = mySwitch.getReceivedValue();//en la librería Viene int

Ya lo he probado y nada, mismo resultado.

Buenas noches,

Según la librería RC-SWITCH debes usar int no long int

Surbyte, tu tienes razon, la libreria extrañamente asi lo estipula, mas sin embargo el problema es que al ser declarado como int limita que el codigo recibido llegue hasta 65535, lo que provoca un desbordamiento y te va a mostrar un código que no es y ésto traerá problemas para verificar el codigo.

Por eso es que se le agrega Long.

Ahora bien respondiendo al amigo Flash, si te tomaste la tarea de leer las notas de la libreria RCswitch que por cierto acá te dejo el link Ver libreria te podrás dar cuenta que la libreria solo acepta determinados modelos de chips codificadores los cuales son:

SC5262 / SC5272
HX2262 / HX2272
PT2262 / PT2272
EV1527 / RT1527 / FP1527 / HS1527
Intertechno outlets
HT6P20X

Ahora te pregunto algo? Que chip usa el control remoto que estas utilizando? Si no es ninguno de estos modelos, debes entonces utilizar otras herramientas como el SDRsharp y un RTL-SDR para decodificar y conocer como esta configurada esa trama de bits y diseñar un sketch que permita decodificarlo. Ya esto se hizo exitosamente y te invito a que leas estos posts Post #1 y el mas completo es este Post #2.

Atento a tus comentarios sobre el chip que usa tu control remoto.

Saludos

Perdon por el retraso en contestar pero estoy toda la semana fuera x trabajo, ya te contactare cuando vuelva surbyte, gracias x la ayuda.

Carlos lo q m comentas es lo primero q pense yo, no obstante en el codigo si te fijas tiene un apartado q dice q si no reconoce la señal deberia dar un mensaje de error si no reconoce el codigo, o asi lo entiendo yo, el caso es q no sale ningun mensaje, solo caracteres raris y aparentamenre aleatorios y solo cuando pulso el boton fisico de arduino.

Lo q voy a hacer es hacerme con un mando 100 x 100 compatible y hacer mas pruebas.

Gracias.

Mira esto

void setup()
{
  pinMode(13,OUTPUT);
  Serial.begin(1200);
  mySwitch.enableReceive(1);  // pin #2 de arduino como RX
}

El problema que tienes lo mas seguro que sea es por el rate o velocidad que implementas.

Te aseguro que en el monitor serial lo tienes seteado a 9200 baudios y en el sketch lo colocaste a 1200. Por favor coloca todo en 9200.

Cámbialo en el sketch y me comentas