Go Down

Topic: Prueba de RF 315Mhz con acelerometro (Read 980 times) previous topic - next topic

krusnik_06

Hola que tal espero me puedan ayudar tengo un programa que he esta diseñando el cual servira para transmitir la señal de un aceleromtro de 3 ejes y controlar de manera inalambrica a 3 servos esto para controlar un brazo despues de muchos programas creo que porfin tengo uno que funciona el problema es que mis transmisores al paracer estan dañados pues al prender la placa arduino antes flasheaba el led de TX indicando que habia una comunicacion y en efecto estan transmitiendo y recibiendo de manera correcta despues de muchas pruebas esto ya no me aparece conecto todo y la placa de arduino no muestra señales de transmitir o de recibir informacion
pense que era mi receptor y pruebo con uno nuevo y me hace exactamento lo mismo nada.

Una observacion al conectar las placas directo a una PC si habro el Serial Monitor estos empieza a prender el led de TX como lo hacia antes pero sin transmitir ni recivir datos alguna sugerencia que puede estar daño. He cargado otros programas para probar si el ATmega esta daño pero cualquier programa que carge lo corre bien

Las placas que estoy ocupando son las Arduino Duemilanove 

Les dejo mi codigo si alguien puede probarlo y decirme si obtiene los volores esperados se lo agradesere por lo que me indicaria que son mis componentes los que estan dañados gracias.

Los modulos que estoy ocupando son
RX http://www.robodacta.mx/index.php?dispatch=products.view&product_id=30324
TX http://www.robodacta.mx/index.php?dispatch=products.view&product_id=30326



Transmisor:
Code: [Select]
//X250,Z123,Y120
char bueffer[15];
int x;
int y;
int z;

void setup(){
  Serial.begin(4800);
  Serial.flush();
}
void loop(){
   x = analogRead(A1);
   y = analogRead(A2);
   z = analogRead(A3);
   
   Serial.print('X');
   Serial.print(x);
   Serial.print(',');
   Serial.print('Y');
   Serial.print(y);
   Serial.print(',');
   Serial.print('Z');
   Serial.print(z);
   Serial.print(',');
   delay (1000);
}


Receptor:
Code: [Select]
#include <Servo.h>

char buffer[15];
Servo servo1;
Servo servo2;
Servo servo3;

void setup(){
  servo1.attach(5); 
  servo2.attach(6);
  servo3.attach(7);
  servo1.write(90);
  servo2.write(90);
  servo3.write(90);
 
  Serial.begin(4800);
  Serial.flush();
}

void loop(){
  if(Serial.available()>0){
    int index = 0;
    delay(500);
    int numChar = Serial.available();
    if(numChar>15){numChar=15;}
   
    while(numChar--){
      buffer[index++] = Serial.read();
    }
   splitString(buffer);
  }
}

void splitString(char* data){
  Serial.print("Dato ingresado: ");
  Serial.println(data);
  char* parametro;
  parametro = strtok(data, ",");
  while ( parametro != NULL){
    setServo(parametro);
    parametro = strtok(NULL, ",");
  }
 
  for(int i=0; i<14; i++){
    buffer[i]='\0';
  }
  Serial.flush();
}

void setServo(char* data){
  if((data[0] == 'X') || (data[0] =='1')){
    int x = strtol(data+1, NULL, 15);
    x = map(x, 130, 500, 0, 180);  // los valores de 130 y 150 son los valores que me proporciona el eje del aceleroemtro
    servo1.write(x);
    Serial.print("Servo1 esta listo a: ");
    Serial.println(x);
  }
 
  if((data[0] == 'Y') || (data[0] == '1')){
    int y = strtol(data+1, NULL, 15);
    y = map(y, 190, 570, 0, 180);
    servo2.write(y);
    Serial.print("Servo2 esta listo a: ");
    Serial.println(y);
  }
 
  if((data[0] == 'Z') || (data[0] == '1')){
    int z = strtol(data+1, NULL, 15);
    z = map(z, 150, 550, 0, 180);
    servo3.write(z);
    Serial.print("Servo3 esta listo a: ");
    Serial.println(z);
  }
}

Go Up