Go Down

Topic: No puedo conectar Processing con Arduino (solucionado) (Read 1 time) previous topic - next topic

Cesar-S

Dec 10, 2011, 02:00 am Last Edit: Dec 11, 2011, 03:17 am by Cesar-S Reason: 1
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: [Select]

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

chiva

Mira que hayas seleccionado bien el puerto serie en processing, 99% de probabilidades de que sea eso.
Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

Cesar-S

#2
Dec 10, 2011, 03:39 am Last Edit: Dec 10, 2011, 04:09 am by Cesar-S Reason: 1
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: [Select]

// 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

SrDonGato

elimina o comenta esta linea en setup

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

con esto te deberia funcionar

un saludo

chiva

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
Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

Cesar-S

#5
Dec 10, 2011, 09:19 pm Last Edit: Dec 11, 2011, 03:32 am by Cesar-S Reason: 1

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

Code: [Select]

// 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

Go Up