Created
April 30, 2014 23:47
-
-
Save pmarkun/f95838fbad49bc0cfe4d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* 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(800, 600); | |
| // 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, "/dev/ttyACM0", 115200); | |
| // don't generate a serialEvent() unless you get a newline character: | |
| myPort.bufferUntil('\n'); | |
| // set inital background: | |
| background(0); | |
| fill(0); | |
| // Setup markers | |
| text("5V", 10, map(0, 0, 1023, 0, height)); | |
| text("2.5V", 10, map(1023/2, 0, 1023, 0, height)); | |
| text("0V", 10, map(1023, 0, 1023, 0, height)); | |
| } | |
| 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(split(inString, "\n")[0]); | |
| //check multiple plots | |
| String[] plots = split(inString, ","); | |
| //reset text area | |
| noStroke(); | |
| fill(0); | |
| rect(0,0,100*plots.length,100); | |
| color[] colors = { color(255,0,0), color(0,255,0), color(0,0,255), color(255,255,0), color(0,255,255) }; | |
| for (int p = 0;p < plots.length && p < 5;p++) { | |
| // convert to an int and map to the screen height: | |
| float inByte = float(trim(plots[p])); | |
| inByte = map(inByte, 0, 1023, 0, height); | |
| fill(colors[p]); | |
| text(plots[p], 0+(p*30), 10); | |
| // draw the line: | |
| stroke(colors[p]); | |
| line(xPos, height - inByte, xPos, height - inByte + 2); | |
| } | |
| // at the edge of the screen, go back to the beginning: | |
| if (xPos >= width) { | |
| xPos = 0; | |
| background(0); | |
| // Setup markers | |
| text("5V", width-30, map(0, 0, 1023, 0, height)); | |
| text("2.5V", width-30, map(1023/2, 0, 1023, 0, height)); | |
| text("0V", width-30, map(1023, 0, 1023, 0, height)); | |
| } | |
| else { | |
| // increment the horizontal position: | |
| xPos++; | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment