import ddf.minim.*; import processing.serial.*; Serial myPort; float inX; float inY; float inZ; float inBend; float inR; float inG; float inB; float inT; float inH; float bX; float bY; float bZ; int check = 0; float sensors[]; int ch = 0; String myString; ArrayList pos = new ArrayList(); FloatList sw = new FloatList(); ArrayList cc = new ArrayList(); float travel = 0; void setup(){ size(800, 800 ); pos = new ArrayList(); pos.add(new PVector(width/2,height/2,0)); cc.add(new PVector(255,255,255)); sw.append(1); String portName = Serial.list()[2]; myPort = new Serial(this, portName, 9600); myPort.bufferUntil('\n'); } void draw(){ background(0); if(travel != 80){ PVector lastp = pos.get(pos.size()-1); float rtx = random(-travel,travel); float rty = random(-travel,travel); if(rtx + lastp.x > width-20 || rtx + lastp.x < 20){ rtx = rtx * -1; } if(rty + lastp.y > height-20 || rty + lastp.y < 20){ rty = rty * -1; } float newx = rtx + lastp.x; float newy = rty + lastp.y; pos.add(new PVector(newx,newy,0)); float ww = (travel/15); if(ww< 0){ sw.append(1); }else{ sw.append(4*(travel/15)); } cc.add(new PVector(random(255),random(255),random(255))); } for(int i = 0; i < pos.size()-1; i++){ PVector fp = pos.get(i); PVector fe = pos.get(i+1); PVector c = cc.get(i); strokeWeight(sw.get(i)); stroke(c.x,c.y,c.z); line(fp.x,fp.y,fe.x,fe.y); } noStroke(); fill(80); rect(100,40,200,20); textSize(12); fill(255); textAlign(RIGHT); text("FLEX",90,55); fill(0,255,255); rect(100,40,200-inBend*.8,20); travel = (200 - inBend*.8) *.4; if(inX > 0 && check == 0){ bX = inX; bY = inY; bZ = inZ; check = 1; } if (myString != null) { myString = trim(myString); float sensors[] = float(split(myString, ',')); inX=sensors[0]; inY=sensors[1]; inZ=sensors[2]; inBend=sensors[6]; inR=sensors[3]; inG=sensors[4]; inB=sensors[5]; inT=sensors[7]; inH=sensors[8]; } } void serialEvent(Serial myPort) { // read the serial buffer: myString = myPort.readStringUntil('\n'); }