Pages: [1]   Go Down
Author Topic: No puedo conectar Processing con Arduino (solucionado)  (Read 1530 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola, estoy haciendo mis primeras pruebas y no logro que se conecte el Processing al puerto.

Primero salia una advertencia, pero instale la libreria y sigue sin conectarse

Code:
Stable Library
=========================================
Native lib Version = RXTX-2.1-7
Java lib Version   = RXTX-2.1-7
[0] "COM2"
[1] "COM3"
[2] "COM4"
[3] "COM5"
processing.serial.Serial@1d33a6b

Si conecto el terminal el Arduino, envia los datos sin problema, y el TX enciende.
Con processing no conecta y no enciende.

Saludos
Cesar
-----------
Adjunto codigos

* pa_LDR.rar (13.54 KB - downloaded 5 times.)
« Last Edit: December 10, 2011, 09:17:37 pm by Cesar-S » Logged

Offline Offline
Edison Member
*
Karma: 23
Posts: 1375
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mira que hayas seleccionado bien el puerto serie en processing, 99% de probabilidades de que sea eso.
Logged

Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

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

Hola chiva, gracias por responder. Seguramente  es así, eh tomado un ejemplo y no logro dar con el problema.

Antes habia leido que se necesitaba el serproxy.exe, no se si es necesario en estas versiones
pero lo baje  y nada.
Dentro del codigo segun entiendo busca el puerto, si es asi me podrias decir donde esta mi error.
En mi caso uso el COM3, con el Arduino conectado me aparece en la lista del Processing.

Code:
// importing the processing serial class
import processing.serial.*;

// the display item draws background and grid
DisplayItems di;

// definition of window size and framerate
int xWidth = 512;
int yHeight = 512;
int fr = 24;

// attributes of the display
boolean bck = true;
boolean grid = true;
boolean g_vert = true;
boolean g_horiz = true;
boolean g_values = false;
boolean output = false;

// variables for serial connection, portname and baudrate have to be set
Serial port;
String portname = "COM3";
int baudrate = 9600;
int value = 0;
String buf="";
int value1 = 0;  

// variables to draw graphics
int x, y, cursorSize;
int cnt = 6;

// lets user control DisplayItems properties and value output in console
void keyPressed() {
  if (key == 'b' || key == 'B') bck=!bck;  // background black/white
  if (key == 'g' || key == 'G') grid=!grid;  // grid ON/OFF
  if (key == 'v' || key == 'V') g_values=!g_values;  // grid values ON/IFF  
  if (key == 'o' || key == 'O') output=!output;   //turns value output ON/OFF
}

void setup() {
  // Print the a list of available Serial Ports
  println(Serial.list());
  // Set the Serial port from the listin [] field
  portname = Serial.list()[0];
  // set size and framerate
  size(xWidth, yHeight);
  frameRate(fr);
  // establish serial port connection      
  port = new Serial(this, portname, baudrate);
  println(port);
  // create DisplayItems object
  di = new DisplayItems();
  ellipseMode(CENTER);
  smooth();
}

void drawLDRState() {
  cnt++;
  if(cnt>24)  cnt = 6;
  strokeWeight(2);
  stroke(0);
  noFill();
  x = width/2;
  y = height/2;

  cursorSize = 5 + cnt*(value1/50);

  ellipse(x, y, cursorSize, cursorSize);
  stroke(255,0,0);
  ellipse(x, y, cursorSize-14, cursorSize-14);
  stroke(0,255,0);
  ellipse(x, y, cursorSize-8, cursorSize-8);
  stroke(0,0,255);
  ellipse(x, y, cursorSize-20, cursorSize-20);
  stroke(255);
  ellipse(x, y, cursorSize, cursorSize);
}
void serialEvent(int serial) {
  // if serial event is not a line break
  if(serial!=10) {        
    // add event to buffer
    buf += char(serial);
  }
  else {
    // if serial is line break set value1 to buff and clear it
    value1 = 1023 - int(buf); // we inverse the value by subtracting it from the maximum
    buf="";
  }
  if(output) println("LDR: "+value1);
}

// draw listens to serial port, draw
void draw() {
  // listen to serial port and trigger serial event  
  while(port.available() > 0) {
    value = port.read();
    serialEvent(value);

  }
  // draw background, then PushButtonState and finally rest of DisplayItems  
  di.drawBack();
  drawLDRState();
  di.drawItems();
}

Saludos
Cesar
« Last Edit: December 09, 2011, 10:09:56 pm by Cesar-S » Logged

Ciudad Real
Offline Offline
God Member
*****
Karma: 1
Posts: 751
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

elimina o comenta esta linea en setup

// portname = Serial.list()[0];

con esto te deberia funcionar

un saludo
Logged

Offline Offline
Edison Member
*
Karma: 23
Posts: 1375
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Según tenías el código te estabas conectando por el COM2, si haces lo que te dice SrDonGato debería conectarse por el COM3
Logged

Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

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

elimina o comenta esta linea en setup

// portname = Serial.list()[0];

con esto te deberia funcionar

un saludo

Gracias, ahora la comunicación es correcta.

Según tenías el código te estabas conectando por el COM2, si haces lo que te dice SrDonGato debería conectarse por el COM3

Deje el código original y modifique el puerto del Arduino a COM2 y funciona la comunicación.

Tenia un error en el final del código ap_ReadAnalog del Arduino, no realizaba ningun cambio en Processing. Cambie Serial.print x Serial.write y funciona todo ok.  smiley-lol

Code:
// and a signal that serves as seperator between two values
  //printByte(10);
Serial.write(10);  // antes tenia Serial.print(10);
// wait for a bit to not overload the port
  delay(10);
}

Aqui varios ejemplos
Saludos y gracias.
Cesar
« Last Edit: December 10, 2011, 09:32:57 pm by Cesar-S » Logged

Pages: [1]   Go Up
Jump to: