LAB4 - Presure sensor controlling Processsing.
Like always credits must go to the community of Arduino and Processing that contribute to the wealth of great examples all available on the internet. In this case I use once again used a Tom Igor sketch to get rolling with the serial portion of my sketch. Having this setup I pulled out "Processing, a programming Handbook for Visual Designers and Artists", by Casey Reas and Ben Fry, which is a fabulous book of how the visual logic of processing works. I used one of their examples the to understand the creation of custom functions, the one I based my sketch uses vertex() and bezierVertex(). to these functions I used the serial in as a variable to create a visual modification of me eyelashes.
For the eyes I used the serial In to modify the diameter of the ellipse.
Parts:
Arduino
Force Sensitive Resistor.
patch cables.
Computer.
Code(arduino):
/*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 9 Apr 2012 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(2); }
Code: Processing
// 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 float face = 10.0; int w; void setup () { // set the window size: size(1200, 800); // 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()[4], 9600); // don't generate a serialEvent() unless you get a newline character: myPort.bufferUntil('\n'); // set inital background: } void draw () { arch(face); w = round(face); println(w); } 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); face = (inByte); } } void arch(float curvature) { background(129,45,45); fill(0); stroke(255); ellipse(width*.25,height*.50, w/4,w/4); ellipse(width*.75,height*.50, w/4,w/4); float y = 90.0; float sw = (1024 - curvature) /2.0; strokeWeight(curvature/15); noFill(); stroke(193,76,103); beginShape(); vertex(width*.55, height/2); quadraticVertex(width*.75, height-curvature, width, height/2); endShape(); beginShape(); vertex(width*.50, height/2); quadraticVertex(width/4, height-curvature, 0, height/2); endShape(); }
- Login to post comments