Si los datos que tienes que enviar de un arduino a otro son enteros de tres cifras como máximo decláralos como int en vez de como float para enviarlos por XBee, házte a la idea de que cuanta menos memoria ocupes en el arduino emisor más velocidad tendrás en ese arduino y menos problemas tendrás para enviar los datos, después en el receptor puedes declarar el dato recibido como float si quieres, pero lo que más te interesa es agilizar los procesos que tienen lugar en el emisor y cuanto menos le hagas trabajar mejor, si ahorras memoria usando un int en vez de un float pues mejor, yo lo haría de la siguiente manera:
ARDUINO EMISOR DE DATOS
int tempSensor = 1;
void setup()
{
Serial.begin(9600);
}
void loop()
{
int tempValor;
tempValor = 0;
tempValor = analogRead(tempSensor);
Serial.print(tempValor);
delay(5000);
}
ARDUINO RECEPTOR DE DATOS
#include <Math.h>
float temp;
float tempValor;
void setup()
{
Serial.begin(9600);
}
void loop()
{
while (Serial.available() > 0)
{
temp = 0;
tempValor = 0;
temp = Serial.read();
tempValor = ( 5.00 * temp * 10.00) / 1024.00; \\ Conversión a grados centígrados
Serial.print(tempValor);
delay(5000);
}
}
Te recomiendo que cojas la sana costumbre de poner a cero los valores al inicio de las rutinas porque a veces puedes tener resultados extraños, poniendo a cero los valores de temp y tempValor te aseguras de que no ocurre nada raro con los datos al almacenar en ellos lo recibido por el puerto serial o lo leído del sensor.
De todas formas.......si en el Arduino receptor usas el comando Serial.print lo que haces es enviar ese dato al Arduino emisor a través del XBee y no sé si leerás correctamente los datos en el monitor serial........casi mejor que uses el XBee receptor con la librería SoftSerial para no entorpecer los datos que quieres leer en el monitor serial del Pc y dejar el serial normal para comunicación con Pc, una vez que consigas que funcione y quieras usarlo de forma autónoma con un display LCD puedes usar el serial por defecto de los pines 0 y 1.
Salu2.