Pages: [1]   Go Down
Author Topic: Radio-Control Con RF 433 Mhz  (Read 820 times)
0 Members and 1 Guest are viewing this topic.
MEXICO
Offline Offline
Newbie
*
Karma: 0
Posts: 42
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buenas compañeros de arduino, esta vez tengo un problema al entender como funciona la libreria
virtual_wire y como usarla para controlar un carrito via RF 433Mhz
pues bueno la logica es como cualquiera,Botones: Arriba Abajo Izquierda Derecha
*Que se puedan combinar arriba y izquierda o derecha.
*Que se puedan combinar abajo y izquierda o derecha.
para eso la logica me llevo  a  investigar lo de los puentes "H" y eh dado con usar el L293D
un doble puente H.....
pero bueno mi problema consiste en que mi codigo que segun yo deberia funcionar, en pruebas
no realiza las funciones, se que esta mal pero no comprendo como hacer que mande dos estados
y que el receptor los ponga en funcion a la vez...
tengo 2 salidas digitales para el giro (ladoMas,ladoMenos) en el receptor
tengo 2 salidas digitales para el motor(motorMas,motorMenos) en el receptor
que deberian variar deacuerdo al boton pulsado en la placa del transmisor,
ejemplo: pulso adelante, motorMas tendra estado HIGH y motorMenos tendra estado LOW
cuando deje de presionar el boton en el transmisor las dos salidas(motorMas,motorMenos) deberan ser LOW
 aqui mi codigo,
TRANSMISOR
Code:
//TRANSMISOR
#include <VirtualWire.h>  //incluimos la libreria de virtualwire
char *msg = "";           //Asignamos el mensaje en blanco
char *msg2 = "";
char *msg3 = "";
char *msg4 = "";
int botonUp = 11;               //Asignamos el estado del boton en 0
int botonDown = 10;
int botonLeft = 9;
int botonRight = 8;

void setup(){
  vw_setup(2000);            //Configuramos la velocidad de transimsion de datos
  pinMode(botonUp, INPUT);
  pinMode(botonDown, INPUT);
  pinMode(botonLeft, INPUT);
  pinMode(botonRight, INPUT);
}

void loop () {
 // botonUp = digitalRead(boton1);    //Leemos el estado del boton y lo guardamos en la variable
  if ( digitalRead (botonUp) == HIGH) {
    msg = "U";                //Si lo esta, asignamos la letra U al mensaje
    vw_send((uint8_t *)msg, strlen(msg));  //y enviamos este mensaje
  }
  else {                      //Si no lo esta
    msg = "V";                //Asignamos N al mensaje
    vw_send((uint8_t *)msg, strlen(msg));    // y lo enviamos
   
  }
 
  if ( digitalRead (botonDown) == HIGH) {
    msg2 = "D";
    vw_send((uint8_t *)msg2, strlen(msg2));
  }
  else {
    msg2 = "E";
    vw_send((uint8_t *)msg2, strlen(msg2));
   
  }
   if ( digitalRead (botonLeft) == HIGH) {
    msg3 = "L";
    vw_send((uint8_t *)msg3, strlen(msg3));
  }
  else {
    msg3 = "M";
    vw_send((uint8_t *)msg3, strlen(msg3));
   
  }
   if ( digitalRead (botonRight) == HIGH) {
    msg4 = "R";
    vw_send((uint8_t *)msg4, strlen(msg4));
  }
  else {
    msg4 = "S";
    vw_send((uint8_t *)msg4, strlen(msg4));
   
  }
}
RECEPTOR
Code:
#include <VirtualWire.h>  //incluimos la libreria de virtualwire

int motorMas = 10;
int motorMenos = 9;
int ladoMas = 8;
int ladoMenos  = 7;

void setup() {
  vw_setup(2000);        //Seleccionamos la velocidad de transmision de datos
  vw_rx_start();         //Iniciamos la comunicación
  pinMode(motorMas, OUTPUT);
  pinMode(motorMenos, OUTPUT);
  pinMode(ladoMas, OUTPUT);
  pinMode(ladoMenos, OUTPUT);
 
}

void loop(){
  uint8_t msg[VW_MAX_MESSAGE_LEN];   
  uint8_t len = VW_MAX_MESSAGE_LEN;

  if (vw_get_message(msg, &len)){  //Condicion para ver si hay mensaje
  if ( msg[0] == 'U') {            //Si el mensaje es una U
  digitalWrite(motorMas, HIGH); digitalWrite(motorMenos,LOW);
  }
  else if (msg[0] == 'N'){         // Si es una N
  digitalWrite(motorMas, LOW); digitalWrite(motorMenos,LOW);
  }
}

if (vw_get_message(msg, &len)){
  if ( msg[0] == 'D') {
  digitalWrite(motorMas, LOW); digitalWrite(motorMenos,HIGH);
  }
  else if (msg[0] == 'E'){
  digitalWrite(motorMas, LOW); digitalWrite(motorMenos,LOW);
  }
}

if (vw_get_message(msg, &len)){
  if ( msg[0] == 'L') {
  digitalWrite(ladoMas, HIGH); digitalWrite(ladoMenos,LOW);
  }
  else if (msg[0] == 'M'){
  digitalWrite(ladoMas, LOW);  digitalWrite(ladoMenos,LOW);
  }
}

if (vw_get_message(msg, &len)){
  if ( msg[0] == 'R') {
  digitalWrite(ladoMenos, HIGH); digitalWrite(ladoMas,LOW);
  }
  else if (msg[0] == 'S'){
    digitalWrite(ladoMenos, LOW);digitalWrite(ladoMas,LOW);
  }
}
}
Logged

Pages: [1]   Go Up
Jump to: