Go Down

Topic: Ayudaaaaaa por fiiiii, con lectura de datos puerto serie (Read 698 times) previous topic - next topic

Hola compis.

Debido a los largo periodos de tiempo que he dedicado a elaborar un codigo de recepción para la lectura de datos y probando todas las opciones que yo creia mas o menos aceptables no consigo mi proposito y es el de leer los datos enviados desde mi emisor arduino con XBee, el caso es que monitoreo el envio y todo me sale ordenadito pero no consigo la lectura.

Alguien me puede ayudar, se lo agradeceré bastante aunque no tanto como mis neuronas.

Ahí os dejo mis codigos.

Gracias. ;)

ENVIO------------------------------------------------------------------------------------------------------------------------------------


int eje_xPin = A0;
int eje_yPin = A1;
int pmotorPin = A2;
int recPin = 2;

  // Definir e inicializar variables donde guardar lecturas sensores
  //Recordatorio codigo: un Array o matriz empieza a contas sus casillas desde 0 no desde 1.
int valor_sensor [ ] = {90, 90, 128, 0}; 

  //Variable utilizada como contador para las funciones for 
int i;

void setup()
{
  //Definir el pin del sensor digital como entrada.
pinMode(recPin, INPUT);


  //Inicializar el puerto serie para su utilizacion a 9600 bps
Serial.begin(19200);
}

void loop()
{
  //Leer los datos de las entradas analogicas y digital, y guardarlo como valores integer en el array.
valor_sensor[0] = analogRead(eje_xPin);
valor_sensor[1] = analogRead(eje_yPin);
valor_sensor[2] = analogRead(pmotorPin);
valor_sensor[3] = digitalRead(recPin);

  //Normalizar valores leidos para ser tratados correctamente por los servos (0-180 grados); motor (0-255 punto medio 128).
  //Orden de grabacion no hace falta normalizar valor al ser una entrada digital (0 o 1)
for (i=0; i<2; i=i++) {
  valor_sensor = map(valor_sensor, 0, 1023, 0, 180);
}
  valor_sensor[2] = map(valor_sensor[2], 0, 1023, 0, 255);

  //enviar por puerto serie valores separandolo por comas, y utilizar el caracter $ para identificar el comienzo de la trama, el retorno de carro
  //sera el caracter de fin del trama
Serial.print("$");
for (i=0; i<3; i=i++) {
  Serial.print(valor_sensor);
  Serial.print(",");
}
Serial.print(valor_sensor[3]);
Serial.println();
delay (500);

}


RECEPCION-------------------------------------------------------------------------------------------------------------------------

const int eje_xPin = A0;
const int eje_yPin = A1;
const int pmotorPin = A2;
const int recPin = 2;

void setup() {
  // initialize serial:
  Serial.begin(19200);
  // make the pins outputs:
  pinMode(eje_xPin, OUTPUT);
  pinMode(eje_yPin, OUTPUT);
  pinMode(pmotorPin, OUTPUT);
  pinMode(recPin, OUTPUT);
 
  }

void loop() {
  // if there's any serial available, read it:
  while (Serial.available() > 0) {

    // busque el siguiente número entero válido en el flujo entrante de serie
    int eje_x = Serial.parseInt();
    // do it again:
    int eje_y = Serial.parseInt();
    // do it again:
    int pmotor = Serial.parseInt();
   
   int rec = Serial.parseInt();
   
     if (Serial.read() == '\$') {
      // constrain the values to 0 - 255 and invert
      // if you're using a common-cathode LED, just use "constrain(color, 0, 255);"
      eje_x = 255 - constrain(eje_x, 0, 255);
      eje_y = 255 - constrain(eje_y, 0, 255);
      pmotor = 255 - constrain(pmotor, 0, 255);

      // fade the red, green, and blue legs of the LED:
      analogWrite(eje_xPin, eje_x);
      analogWrite(eje_yPin, eje_y);
      analogWrite(pmotorPin, pmotor);
      digitalWrite(recPin, rec);
     
      // print the three numbers in one string as hexadecimal:
      Serial.print(eje_x, HEX);
      Serial.print(eje_y, HEX);
      Serial.print(pmotor, HEX);
     Serial.print(rec, HEX);
    }
  }
}



Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy