// 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 //Serial input buffer String[] inData = new String[5]; int counter = 0; //counter variable to track which data point number it is 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], 57600); // don't generate a serialEvent() unless you get a newline character: myPort.bufferUntil('\n'); // set inital background: background(0); } void draw () { //Draw the axis labels text("0C",5,300); text("20C",5,240); text("40C",5,180); text("60C",5,120); text("80C",5,60); text("100C",5,10); text("Purple is chamber temp",75,10); text("Red is set point",75,20); } void serialEvent (Serial myPort) { // get the ASCII string: String inString = myPort.readStringUntil('\n'); if (inString != null) { // trim off any whitespace: inString = trim(inString); //split the input string at the commas inData = split(inString,','); // convert temp to an int and map to the screen height: float temp = float(inData[0]); temp = map(temp, 0, 100, 0, height); //prevent null pointer if(inData[1].equals(null))inData[1]="0"; //convert setpoint to int and map to height float setpoint = float(inData[1]); setpoint = map(setpoint, 0, 100, 0, height); //increment the counter counter++; //only plot every 250th point if(counter == 50){ counter = 0; // draw the temperature line: stroke(127,34,255); line(xPos, height, xPos, height - temp); //plot the setpoint stroke(204, 102, 0); point(xPos,height - setpoint); // at the edge of the screen, go back to the beginning: if (xPos >= width) { xPos = 0; background(0); } else { // increment the horizontal position: xPos++; } } } }