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);
}
}
}