Go Down

Topic: acelerometro con RF 433 Mhz (Read 1 time) previous topic - next topic

krusnik_06

Hola gente otra vez por estos lados para pedirles un poco de ayuda jeje estoy trabajando con el acelerometro MMA7361L de 3 ejes. Mi problema es a la hora de transmitir datos tengo los modulos de RF ya eh trabajo con estos 2 partes para poder hacer un carro inalambrico pero el programa fue bastante facil. a continuacion les presento mis programas para el carro.

Acelerometro:
http://www.robodacta.mx/index.php?dispatch=products.view&product_id=30201

Receptor RF
http://www.robodacta.mx/index.php?dispatch=products.view&product_id=30324

Transmisor RF
http://www.robodacta.mx/index.php?dispatch=products.view&product_id=30326

Code: [Select]
//transmisor
int x;
int y;

void setup()
{
  Serial.begin(4800);
 
  pinMode(x,INPUT);
  pinMode(y,INPUT);
}

void loop()
{
  x = analogRead(A0);
  y = analogRead(A1);
 
  if(x<250)
   Serial.print('s');
   
  else if(x>420)
   Serial.print('w');
   
  else if(y>400)
   Serial.print('a');
 
  else if(y<240)
   Serial.print('d');
   
  else
  Serial.print('n');
   
   delay(100);
}


Code: [Select]
//receptor
// Receptor
int led=12;
int A = 4;//blanco
int B = 5;//blanco cinta
int C = 6;//verde
int D = 7;//verde cinta


void setup() {
  // inicia el puerto serial
  Serial.begin(4800);
  pinMode(12,OUTPUT);
   pinMode(A,OUTPUT);
   pinMode(B,OUTPUT);
   pinMode(C,OUTPUT);
   pinMode(D,OUTPUT); 
}
void loop() {
     
    byte Byte;

   
    if (Serial.available()) {
    Byte = Serial.read();
   
    switch(Byte){
    case 's':
   
      digitalWrite(A,LOW);//atras
      digitalWrite(B,HIGH);
      digitalWrite(C,LOW);
      digitalWrite(D,HIGH);
      delay(200);
      digitalWrite(A,LOW);//stop
      digitalWrite(B,LOW);
      digitalWrite(C,LOW);
      digitalWrite(D,LOW);
      Serial.flush();
      break;
     
      case 'w':
   
      digitalWrite(A,HIGH);//avanzar
      digitalWrite(B,LOW);
      digitalWrite(C,HIGH);
      digitalWrite(D,LOW);
      delay(200);
      digitalWrite(A,LOW);//stop
      digitalWrite(B,LOW);
      digitalWrite(C,LOW);
      digitalWrite(D,LOW);
      Serial.flush();
      break;
     
      case 'a':

      digitalWrite(A,HIGH);//izquierda
      digitalWrite(B,LOW);
      digitalWrite(C,LOW);
      digitalWrite(D,HIGH);
      delay(50);
      digitalWrite(A,LOW);//stop
      digitalWrite(B,LOW);
      digitalWrite(C,LOW);
      digitalWrite(D,LOW);
      Serial.flush();
      break;
     
      case 'd':
     
      digitalWrite(A,LOW);//derecha
      digitalWrite(B,HIGH);
      digitalWrite(C,HIGH);
      digitalWrite(D,LOW);
      delay(50);
      digitalWrite(A,LOW);//stop
      digitalWrite(B,LOW);
      digitalWrite(C,LOW);
      digitalWrite(D,LOW);
      Serial.flush();
      break;
     
      case 'n':
     
      digitalWrite(A,LOW);//stop
      digitalWrite(B,LOW);
      digitalWrite(C,LOW);
      digitalWrite(D,LOW);
      Serial.flush();
      break;

     
     }
}
}


como pueden notar solo fue considerar un rango y mandar un byte para su facil recpecion pero lo que quiero es poder transmitir las 3 señales del acelerometro para poder recirbirlas y ocuparlas pero no eh logrado tener exito uno de los programas empleados fue el siguiente.

Code: [Select]
//transmisor
const int rf[] = { 0, 1, 2};
int rf[]= {0, 0, 0};

void setup()
{
  Serial.begin(4800);
}

void loop()
{
  for(int i=0; i<3; i++){
    rf[i]= analogRead(rf[i]);
    Serial.print(rf[i]);
  }
  delay(100);
}


y de la misma forma recupero los datos pero solo obtengo ruido del receptor valores de 0 a 255 habra alguna forma de transmitir las variables del acelerometro de forma inalabria con estos transmisores

Gracias por su tiempo.



Go Up