import processing.serial.*; import java.io.FileWriter; import java.io.*; import java.util.*; Serial myPort; String val = "0.0"; int speeds_show=5; float[] speeds=new float[speeds_show]; int speeds_index=0; //points to next array index float speedfloat=0; Date d=new Date(); PrintWriter pw; int unitdisplay=0; int unitdisplay_count=9; //how much different units available void setup() { size(1500, 1000); frameRate(30); String portName = "COM5"; //String portName = "/dev/ttyUSB0"; myPort = new Serial(this, portName, 115200); pw=createWriter("speeds.txt"); background(0); } // speed wird sein "20.08" oder void draw() { if ( myPort.available() > 0) { val = myPort.readString(); print("val = " + val); val = val.substring(0,val.length()-1); speedfloat=float(val); speeds[speeds_index]=speedfloat; speeds_index++; speeds_index%=speeds_show; println(d.getTime()+";"+speedfloat); pw.println(d.getTime()+";"+speedfloat); pw.flush(); unitdisplay=int(random(0,unitdisplay_count)); unitdisplay=1; println("unitdisplay: "+unitdisplay); } background(0); fill(255); textSize(150); switch(unitdisplay){ case 0: text(nf(speedfloat,1,2) + " km/h" , 100, 200); break; case 1: text(nf(speedfloat*0.621371,1,2) + " mph" , 100, 200); break; case 2: text(nf(speedfloat*0.000809848,1,6) + " Mach" , 100, 200); break; case 3: text(nf(speedfloat*0.911344,1,2) + " ft/s" , 100, 200); break; case 4: text(nf(speedfloat*0.277778,1,2) + " m/s" , 100, 200); break; case 5: text(nf(speedfloat*0.539957,1,2) + " knots" , 100, 200); break; case 6: text(nf(speedfloat*1079000000,1,0) + " c" , 100, 200); break; case 7: text(nf(speedfloat*54.67469,1,0) + " ft/min" , 100, 200); break; case 8: text(nf(pow((speedfloat*0.277778/0.836), 2.0/3),1,0) + " Bft" , 100, 200); break; } textSize(80); //println(); int ipos=1; for (int i=speeds_show;i>0;i--){ ipos++; text( nf(speeds[(speeds_show+speeds_index-1+i)%speeds_show], 1,2) + "km/h", 100, 250+(ipos)*80); //print(speeds[i]); //print(","); } }