// Etch-a-Sketch // by Trevor Shannon // // based on Graph // by David A. Mellis import processing.serial.*; Serial port; String buff = ""; String buff1 = ""; String buff2 = ""; int index = 0; int NEWLINE = 10; // Store the last 256 values received so we can graph them. int[] valuesx = new int[256]; int[] valuesy = new int[256]; void setup() { size(512, 512); port = new Serial(this, "COM9", 9600); // If you know the name of the port used by the Arduino board, you // can specify it directly like this. //port = new Serial(this, "COM1", 9600); } void draw() { background(0); stroke(0); // Graph the stored values by drawing a lines between them. for (int i = 0; i < 255; i++){ stroke(i); line(512 - valuesx[i], 512 - valuesy[i], 512-valuesx[i + 1], 512 - valuesy[i + 1]); } while (port.available() > 0) serialEvent(port.read()); } void serialEvent(int serial) { if (serial != NEWLINE) { // Store all the characters on the line. buff += char(serial); } else { // The end of each line is marked by two characters, a carriage // return and a newline. We're here because we've gotten a newline, // but we still need to strip off the carriage return. buff = buff.substring(0, buff.length()-1); index = buff.indexOf(","); buff1 = buff.substring(0, index); buff2 = buff.substring(index+1, buff.length()); // Parse the String into an integer. We divide by 4 because // analog inputs go from 0 to 1023 while colors in Processing // only go from 0 to 255. int x = Integer.parseInt(buff1)/2; int y = Integer.parseInt(buff2)/2; // Clear the value of "buff" buff = ""; // Shift over the existing values to make room for the new one. for (int i = 0; i < 255; i++) { valuesx[i] = valuesx[i + 1]; valuesy[i] = valuesy[i + 1]; } // Add the received value to the array. valuesx[255] = x; valuesy[255] = y; } }