import processing.serial.*; // The serial port: Serial myPort; void setup() { // List all the available serial ports printArray(Serial.list()); // Open the port you are using at the rate you want: myPort = new Serial(this, Serial.list()[0], 9600); size(500, 400); } void draw() { while (myPort.available() > 0) { String myString = myPort.readStringUntil(10); if (myString != null) { //println(myString); background(255); // get in raw vale and raw vib val float val = 1.0 + (float(myString)/5); float vib = 121; // set size of rectangle an start in pixels float width_100 = 300; float draw_start_x = 100; float draw_start_y = 100; float draw_height = 100; // transform vib and raw to pixels float vib_x = scale_val(vib,width_100); float scaled_val = scale_val(val,width_100); //draw rectangle bar stroke(0); //Green is default color of bar fill(0,255,0); rect(draw_start_x,draw_start_y,width_100,draw_height); //Red is new progress bar fill(255,0,0); rect(draw_start_x,draw_start_y,scaled_val,draw_height); // line for vib strokeWeight(4); line(draw_start_x+vib_x,draw_start_y,draw_start_x+vib_x,draw_start_y+draw_height); strokeWeight(1); // text fill(0,0,0); int text_height = 16; int text_offset = 60; textSize(text_height); text(scaled_val/width_100*100,draw_start_x-text_offset,draw_start_y+draw_height/2+text_height/2); //ellipse(width/2, height/2, val, val); } } } float scale_val(float val, float width_100){ float min = 104.2; float max = 202; return ((val-min)/(max-min))*width_100; }