Pages: [1]   Go Down
Author Topic: Problemas Arduino-Processing  (Read 1899 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 10
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
« Last Edit: April 29, 2012, 06:30:53 pm by coleoptero » Logged

Madrid
Offline Offline
Sr. Member
****
Karma: 5
Posts: 481
Life isn't about finding yourself, life is about creating yourself!!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

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

     

[SOLUCIONADO]

Offline Offline
Newbie
*
Karma: 0
Posts: 10
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

0
Offline Offline
Jr. Member
**
Karma: 5
Posts: 72
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

¿Como debería salir?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 10
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Madrid
Offline Offline
Sr. Member
****
Karma: 5
Posts: 481
Life isn't about finding yourself, life is about creating yourself!!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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.

Logged

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

     

[SOLUCIONADO]

Offline Offline
Newbie
*
Karma: 0
Posts: 10
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


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.
Logged

Madriz
Offline Offline
Full Member
***
Karma: 0
Posts: 176
Glober Arduiner
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Pages: [1]   Go Up
Jump to: