Pages: [1]   Go Down
Author Topic: Interfacing with Processing through serial port  (Read 1604 times)
0 Members and 1 Guest are viewing this topic.
Los Angeles
Offline Offline
Full Member
***
Karma: 1
Posts: 148
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Im new to both arduino and Processing.
I need to learn to integrate them both together so that serial data from arduino is read and utilized by Processing.
I got this test code from the arduino website but when I run the code the processing software brings up a black screen and doesn't do anything else.  I tried a few examples from the processing website but get similar effects.
When I do a sample program for arduino to send serial data, the arduino serial monitor shows activity so that tells me it is sending.  The processing end of the test seems to be what is not working.  I am using COM4 for the arduino.
 
In all of the sample codes these ntes are present:
// I know that the first port in the serial list on my mac
 // is always my  Arduino, so I open Serial.list()[0].
 // Open whatever port is the one you're using.

Do I need to specify com4 somewhere or is processing automatically finding it?
If it is finding it automatically I cant figure out why there is no output...(should be showing a graph based on my turning of a pot connected to arduino)
 
Any help would be appreciated.
 
BTW  I get an error message in processing that highlights the */ symbol at the end of the code.  If I erase it and the /* at the beginning the it will compile and run but with no output besides a black screen.
 
This is the code pasted from the arduino website (listed under learning/communications/graph):
 
 
/*
  Graph
 
 A simple example of communication from the Arduino board to the computer:
 the value of analog input 0 is sent out the serial port.  We call this "serial"
 communication because the connection appears to both the Arduino and the
 computer as a serial port, even though it may actually use
 a USB cable. Bytes are sent one after another (serially) from the Arduino
 to the computer.
 
 You can use the Arduino serial monitor to view the sent data, or it can
 be read by Processing, PD, Max/MSP, or any other program capable of reading
 data from a serial port.  The Processing code below graphs the data received
 so you can see the value of the analog input changing over time.
 
 The circuit:
 Any analog input sensor is attached to analog in pin 0.
 
 created 2006
 by David A. Mellis
 modified 14 Apr 2009
 by Tom Igoe and Scott Fitzgerald
 
 This example code is in the public domain.

 http://www.arduino.cc/en/Tutorial/Graph
 */

void setup() {
  // initialize the serial communication:
  Serial.begin(9600);
}

void loop() {
  // send the value of analog input 0:
  Serial.println(analogRead(A0));
  // wait a bit for the analog-to-digital converter
  // to stabilize after the last reading:
  delay(10);
}

/* Processing code for this example
 
 // Graphing sketch
 
 
 // This program takes ASCII-encoded strings
 // from the serial port at 9600 baud and graphs them. It expects values in the
 // range 0 to 1023, followed by a newline, or newline and carriage return
 
 // Created 20 Apr 2005
 // Updated 18 Jan 2008
 // by Tom Igoe
 // This example code is in the public domain.
 
 import processing.serial.*;
 
 Serial myPort;        // The serial port
 int xPos = 1;         // horizontal position of the graph
 
 void setup () {
 // set the window size:
 size(400, 300);       
 
 // List all the available serial ports
 println(Serial.list());
 // I know that the first port in the serial list on my mac
 // is always my  Arduino, so I open Serial.list()[0].
 // Open whatever port is the one you're using.
 myPort = new Serial(this, Serial.list()[0], 9600);
 // don't generate a serialEvent() unless you get a newline character:
 myPort.bufferUntil('\n');
 // set inital background:
 background(0);
 }
 void draw () {
 // everything happens in the serialEvent()
 }
 
 void serialEvent (Serial myPort) {
 // get the ASCII string:
 String inString = myPort.readStringUntil('\n');
 
 if (inString != null) {
 // trim off any whitespace:
 inString = trim(inString);
 // convert to an int and map to the screen height:
 float inByte = float(inString);
 inByte = map(inByte, 0, 1023, 0, height);
 
 // draw the line:
 stroke(127,34,255);
 line(xPos, height, xPos, height - inByte);
 
 // at the edge of the screen, go back to the beginning:
 if (xPos >= width) {
 xPos = 0;
 background(0);
 }
 else {
 // increment the horizontal position:
 xPos++;
 }
 }
 }
 
 */

Logged

Seattle, WA USA
Offline Offline
Brattain Member
*****
Karma: 613
Posts: 49343
Seattle, WA USA
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
In all of the sample codes these ntes are present:
// I know that the first port in the serial list on my mac
 // is always my  Arduino, so I open Serial.list()[0].
 // Open whatever port is the one you're using.

Do I need to specify com4 somewhere or is processing automatically finding it?
Read the comments. The Serial.list() function returns a list of available COM ports. You can print that list using:
Code:
println(Serial.list());

The COM port that your Arduino is attached to may not be the first one in the list (at
  • ). It might be the 2nd (at [1]) or the 3rd (at [2]), or even farther down in the list (unlikely).

The code you posted contains stuff for both Processing and Arduino. You are supposed to delete the stuff for the other application from each copy.

Logged

Pages: [1]   Go Up
Jump to: