Go Down

Topic: Problemas Arduino-Processing (Read 2183 times) previous topic - next topic

Humphrey

Feb 03, 2011, 01:29 pm Last Edit: Apr 30, 2012, 01:30 am by coleoptero Reason: 1
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.

yOPERO

Podrías decirnos el modelo del sonar y  colgar los sketches de arduino y processing?
Engineering is the art of
making what you want from
things you can get.

     

[SOLUCIONADO]

Humphrey

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

xlopez


Humphrey

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

yOPERO

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:


Code: [Select]
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.

Engineering is the art of
making what you want from
things you can get.

     

[SOLUCIONADO]

Humphrey


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.

aero_yo

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

Go Up