Problemas Arduino-Processing

Buenas a todos,

Lo primero de todo es presentarme, soy nuevo por aquí aunque hace tiempo que os sigo.

Al tema, estoy haciendo un pequeño sonar (bueno me he basado en uno que hay por la red) el tema de Arduino funciona bien. El problema viene cuando paso los datos al ordenador, en el Serial monitor se ven bien cada numero en su línea, pero cuando conecto el processing me salen números raros (no respeta el cambio de línea).

Ejemplo:
1
2
3
4
5
6
7
8
9
10
11
1
1
1
51
1
1
1
2
1
223

Pd: Uso Mac os X (sobre windows no lo he podido probar) y las últimas versiones de Arduino y processing.

Podrías decirnos el modelo del sonar y colgar los sketches de arduino y processing?

El sketch de arduino:

void setup() {
leftRightServo.attach(9); // Servo's Pin

// initialize the serial port:
Serial.begin(9600);
}

/* begin rotating the servo and getting sensor values */
void loop() {
for(leftRightPos = 0; leftRightPos < 100; leftRightPos++) { // de izq a der
leftRightServo.write(leftRightPos);
for (index = 0; index<=numReadings;index++) { // 10 tomas para hacer la media
// Pin como salida:
pinMode(pingPin,OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(50);
digitalWrite(pingPin, HIGH); // envio pulso de 50 ms
delayMicroseconds(50);
digitalWrite(pingPin, LOW); // close signal

// Pin como entrada:
pinMode(pingPin, INPUT);
duration = pulseIn(pingPin, HIGH); // calcula el tiempo del pulso de llegada
distance= duration / 29 / 2; // paso a cm
total = total + distance; // calculo la suma para luego hacer la media
delay(30); //
}
average = total/numReadings; // media

if (index >= numReadings) { // reseteo los contadores
index = 0;
total = 0;
}
Serial.print(leftRightPos); // mando por el serie la posición actual del servo
Serial.println();
Serial.print(average); // mando por serie la media (distancia al objeto)
Serial.println();
}

El que utilizo para el processing es un ejemplo de los que trae de la libreria Serial (SimpleRead), con todos los que he probado me da el mismo error.

Y por último el modelo del emisor-receptor de ultrasonidos es:

http://www.seeedstudio.com/depot/datasheet/Seeed%20Ultrasonic%20Sensor%20datasheet.pdf

¿Como debería salir?

Debería ser una serie ascendente (representa los ángulos del servo), 1,2,3,4,5,6, ... hasta 100.
Se puede ver que es esta bien hasta que activo el sketch de processing (número 11). Cuando cierro la ventana de la representación de processing los valores vuelven a estar bien.

Ejemplo:
1,2,3,4,5,6,7,8,9,10,11, (activo procesing) 1,1,51,1,1,1,2,1,223 (cierro la ventana) 24,25,26,27

Parece tema de comunicación entre lo que envia Arduino y como lo recibe Processing.

Yo intentaria recoger la variable y enviarla como bits;Algo asi:

val = analogRead(SENSOR); // Lee el valor 
                            //del sensor

Serial.print(0xff, BYTE); // Sync byte
Serial.print((val >> 8) & 0xff, BYTE);
Serial.print(val & 0xff, BYTE);

Tambien te aconsejaria para futuros projectos que primero intentes el dialogo entre Arduino y Processing con una sola variable. Una vez confirmado que hablan el mismo idioma te exapandes, esto para minimizar las posibles causas de los errores.

yOPERO.

Yopero yo también pienso que es tema de comunicación entre los 2 programas, pero no se a que se debe (alguna librería supongo, por eso preguntaba si alguien había tenido el mismo problema). En cuanto a lo que comentas de empezar por algo más fácil, eso es lo que hice, utilice un ejemplo de arduino que se llama Graph (lectura de un potenciometro y representación con processing) , y el resultado era el mismo.

Bueno, mientras escribía estas líneas me he puesto a cacharrear y al final he descubierto porque era. Por lo que he deducido no se puede poner a la vez el Serial monitor del arduino y el Processing (si se quiere ver los datos, los veo en el processing).

Muchas gracias a todos por contestar.

Siempre puedes sacarlos por el monitor de processing en lugar del monitor serie de Arduino