By Jeff Gray, Feb 2008

Three analog sensors, formatted and sending out of the Arduino. Processing takes them and does a simple display on screen.

Arduino Code

int an1, an2, an3 = 0;

void setup() {
  Serial.begin(19200);
}

void loop() {
  an1 = analogRead(0);
  delay(5); 
  an2 = analogRead(1);
  delay(5); 
  an3 = analogRead(2);
  Serial.print("X");
  Serial.println(an1,DEC);
  Serial.print("Y");
  Serial.println(an2,DEC);
  Serial.print("Z");
  Serial.println(an3,DEC);
  delay(15);               
}

Processing Code

import processing.serial.*;

String buff = "";
int val = 0;
int NEWLINE = 10;
int xPos,yPos,zPos = 0;
int displaySize = 2;
int an1, an2, an3;

Serial port;

void setup(){
  background(80);
  size(800,600);
  smooth();

  port = new Serial(this, Serial.list()[0], 19200);
}

void draw(){
  // new background over old
  fill(80,5);
  noStroke();
  rect(0,0,width,height);

  // wipe out a small area in front of the new data
  fill(80);
  rect(xPos+displaySize,0,50,height);

  // check for serial, and process
  while (port.available() > 0) {
    serialEvent(port.read());
  }
}


void serialEvent(int serial) { 
  if(serial != '\n') { 
    buff += char(serial);
  } else {
    int curX = buff.indexOf("X");
    int curY = buff.indexOf("Y");
    int curZ = buff.indexOf("Z");

    if(curX >=0){
      String val = buff.substring(curX+1);
      an1 = Integer.parseInt(val.trim());

      xPos++;
      if(xPos > width) xPos = 0;

      sensorTic(xPos,an1+20);
    }    
    if(curY >=0){
      String val = buff.substring(curY+1);
      an2 = Integer.parseInt(val.trim());

      yPos++;
      if(yPos > width) yPos = 0;

      sensorTic(yPos,an2-255);
    }
    if(curZ >=0){
      String val = buff.substring(curZ+1);
      an3 = Integer.parseInt(val.trim());

      zPos++;
      if(zPos > width) zPos = 0;

      sensorTic(zPos,an3-255);
    }

    // Clear the value of "buff"
    buff = "";
  }
}

void sensorTic(int x, int y){
  stroke(0,0,255);
  fill(0,0,255);
  ellipse(x,y,displaySize,displaySize);
}