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.
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
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:
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.
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.