Autor Tema: Encender led con Rf y arduino  (Leído 163 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado eneko166

  • PIC10
  • *
  • Mensajes: 8
Encender led con Rf y arduino
« en: 30 de Octubre de 2017, 11:02:21 »
Soy nuevo en arduino y no logro encender un led a traves de un mando rf
El tema es el siguiente: tengo un receptor rf y un led conectado al arduino, y quiero que al recibir x dato (pongamos 1234567) se encienda el led y al recibir y dato (pongamos 7654321) se apague.
Entrada de datos del rf por el Pin 11 y el led por el 13. No se que le falta al codigo, pero no me funciona

#include <VirtualWire.h>
byte message[VW_MAX_MESSAGE_LEN];
byte messageLength = VW_MAX_MESSAGE_LEN;
void setup()
{
pinMode(13, OUTPUT); // Pin 13 para led
Serial.begin(9600);//Iniciamos el Serial
Serial.println("Iniciando...");
vw_setup(2000);
vw_rx_start();
}
void loop()
{
if (vw_get_message(message, &messageLength))
{
if(comparar("1234567") == 0){
digitalWrite(13, HIGH);
Serial.write("LED Encendido\n");
}
else if(comparar("7654321") == 0)
{
digitalWrite(13,LOW);
Serial.write("LED Apagado\n");
}
}
}
char comparar(char* cadena) {
//Esta funcion compara el string cadena con el mensaje recibido.
//Si son iguales, devuelve 1. Si no, devuelve 0.
for(int i = 0; i<messageLength; i++)
{
if(message != cadena)
{
return 1;
}
}
return 0;
}

Desconectado eneko166

  • PIC10
  • *
  • Mensajes: 8
Re:Encender led con Rf y arduino
« Respuesta #1 en: 31 de Octubre de 2017, 21:54:05 »
Y ya aprovecho para preguntar, cuál es el alcance máximo que tienen estos módulos de RF baratos? Hace años hice algún circuito y no pasaba de 2.5m...

Desconectado elreypic2

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 754
Re:Encender led con Rf y arduino
« Respuesta #2 en: 31 de Octubre de 2017, 22:59:26 »
que tal eneko166,

La verdad nunca he usado esa librería para arduino, pero yo implemente mi propia libreria para PIC, y esta escrita en C. Asi que tranquilamente la puedes usar en los Arduinos. Este es el link en donde explico todo con detalles:

http://www.todopic.com.ar/foros/index.php?topic=46977.msg393024#msg393024

Por cierto con esta forma yo logré los 80 metros en condiciones ideales con una fuente de 5V, pero si usas 12V en el transmisor, puedes alcanzar unos 120 a 150 metros.

Espero esto te sea de utilidad.

elreypic.

Desconectado eneko166

  • PIC10
  • *
  • Mensajes: 8
Re:Encender led con Rf y arduino
« Respuesta #3 en: 02 de Noviembre de 2017, 11:55:59 »
que tal eneko166,

La verdad nunca he usado esa librería para arduino, pero yo implemente mi propia libreria para PIC, y esta escrita en C. Asi que tranquilamente la puedes usar en los Arduinos. Este es el link en donde explico todo con detalles:

http://www.todopic.com.ar/foros/index.php?topic=46977.msg393024#msg393024

Por cierto con esta forma yo logré los 80 metros en condiciones ideales con una fuente de 5V, pero si usas 12V en el transmisor, puedes alcanzar unos 120 a 150 metros.

Espero esto te sea de utilidad.

elreypic.
Muchas gracias!! Al final lo hice funcionar partiendo del programa que tenia medio hecho, con la libreria rc-switch.
Tiene bastante poco alcance la verdad, a 3m se pierde la conexion. El emisor esta alimentado a 12V, y le e puesto antena al receptor (vamos un cable de 16.5cm), y este lo he configurado a 2400 baudios, pero necesitaria que llegara a unos 25m...
Una vez mas muchas gracias por tu aportación, la tendré en cuenta ;)
Dejo el codigo de como lo tengo ahora mismo:




#include <RCSwitch.h>
 
RCSwitch mySwitch = RCSwitch();
int led=4;                    //ponemos en el pin 4 el LED
int sirena=5;
 
void setup() {
  Serial.begin(300);
  mySwitch.enableReceive(0);  // Receptor en el pin #2
  pinMode(led, OUTPUT);         
}
 
void loop() {
   
  if (mySwitch.available()) {              // si tenemos datos disponibles que recibir
     
    int value = mySwitch.getReceivedValue();
     
    if (value == 0)
    {
      Serial.print("WTF");   //Por si se recibe algo raro
    }
    else
    {
      Serial.print("Recibido el valor ");
      Serial.println(value);
      if (value == 1234567, 24)
        {
        Serial.println("Encendemos LED");
        digitalWrite(led, HIGH);
        delay(1000);
        digitalWrite(led, LOW);
         Serial.println("Apagamos LED");
       
        }
   
      mySwitch.resetAvailable();
    }
  }
}


 

anything