diff --git a/lichtschranke/speedshow/Blackout Midnight Umlauts.ttf b/lichtschranke/speedshow/Blackout Midnight Umlauts.ttf new file mode 100644 index 0000000..cced628 Binary files /dev/null and b/lichtschranke/speedshow/Blackout Midnight Umlauts.ttf differ diff --git a/lichtschranke/speedshow/Blackout Zwo Uhr Nachts.ttf b/lichtschranke/speedshow/Blackout Zwo Uhr Nachts.ttf new file mode 100644 index 0000000..33ec53d Binary files /dev/null and b/lichtschranke/speedshow/Blackout Zwo Uhr Nachts.ttf differ diff --git a/lichtschranke/speedshow/speedshow.pde b/lichtschranke/speedshow/speedshow.pde deleted file mode 100644 index 156d04c..0000000 --- a/lichtschranke/speedshow/speedshow.pde +++ /dev/null @@ -1,203 +0,0 @@ -import processing.serial.*; -import processing.net.*; -import java.io.FileWriter; -import java.io.*; -import java.util.*; -import spout.*; - -boolean spoutactive=true; -Spout spout; -PFont fontregular; -PImage image_line; -Serial myPort; -Server myServer; -String val = "0.0"; -int speeds_show=10; -float[] speeds=new float[speeds_show]; -int speeds_index=0; //points to next array index -float speedfloat=0; -float triggerspeedmin=15; //current triggerspeed -int unitdisplay=0; -int unitdisplay_count=9; //how much different units available -int xtextstart=10; - -void setup() { - size(800, 600, P3D); - frameRate(30); - - fontregular=createFont("Montserrat-Regular.ttf",64); - textFont(fontregular); - - myServer = new Server(this, 2323); - image_line = loadImage("bleeptrackline.png"); - - //String portName = "COM5"; - //String portName = "/dev/ttyUSB0"; - int useportID=-1; - println("Serialports:"); - for(int i=0;i 0) { - String sread = myPort.readString(); - println("serialRead: " + sread); - if (sread.length()>=7 && sread.substring(0,6).equals("speed=")){ //new speed measurement - val = sread.substring(6,sread.length()-1); - - speedfloat=float(val); - - speeds[speeds_index]=speedfloat; - speeds_index++; - speeds_index%=speeds_show; - - Date d=new Date(); - - println(d.getTime()+";"+speedfloat); - //pw.println(d.getTime()+";"+speedfloat); - //pw.flush(); - appendTextToFile("speeds.txt",d.getTime()+";"+speedfloat); - - unitdisplay=int(random(0,unitdisplay_count)); - println("unitdisplay: "+unitdisplay); - - triggerspeedmin=getTimesPercentile(0.8); - //triggerspeedmin=getTimesMax(); - sendSpeedTrapValue(int(triggerspeedmin)); - - myServer.write(str(speedfloat)); - } - - } - - background(0); - fill(0,132,176); - - textSize(100); - - - int xtext=xtextstart; - int ytext=100; - switch(unitdisplay){ - case 0: - text(nf(speedfloat,1,2) + " km/h" , xtext, ytext); - break; - case 1: - text(nf(speedfloat*0.621371,1,2) + " mph" , xtext, ytext); - break; - case 2: - text(nf(speedfloat*0.000809848,1,6) + " Mach" , xtext, ytext); - break; - case 3: - text(nf(speedfloat*0.911344,1,2) + " ft/s" , xtext, ytext); - break; - case 4: - text(nf(speedfloat*0.277778,1,2) + " m/s" , xtext, ytext); - break; - case 5: - text(nf(speedfloat*0.539957,1,2) + " knots" , xtext, ytext); - break; - case 6: - text(nf(speedfloat*0.000000000926567,1,9) + " c" , xtext, ytext); - break; - case 7: - text(nf(speedfloat*54.67469,1,0) + " ft/min" , xtext, ytext); - break; - case 8: - text(nf(pow((speedfloat*0.277778/0.836), 2.0/3),1,0) + " Bft" , xtext, ytext); - break; - - - } - - - //Line - image(image_line, 10, 100); - - int reducesizefactor=40; - int lastytextpos=200; - - for (int i=speeds_show;i>0;i--){ - float colorpercentage=i*1.0/speeds_show; - fill(0,132*colorpercentage+163*(1-colorpercentage),176*colorpercentage+86*(1-colorpercentage)); - textSize(50-(1-colorpercentage)*reducesizefactor); - text( nf(speeds[(speeds_show+speeds_index-1+i)%speeds_show], 1,2) + " km/h", xtextstart, lastytextpos); - lastytextpos+=50-(1-colorpercentage)*reducesizefactor; - } - - textSize(40); - text( "speed trap: "+nf(triggerspeedmin,1,1) +" km/h", 10, height-50); - - - if (spoutactive){ - spout.sendTexture(); - } - -} - -float getTimesMax(){ - float speedmax=0; - for (int i=0;i 0) { + String sread = myPort.readString(); + println("serialRead: " + sread); + if (sread.length()>=7 && sread.substring(0,6).equals("speed=")){ //new speed measurement + val = sread.substring(6,sread.length()-1); + + speedfloat=float(val); + + speeds_index++; + speeds_index%=speeds_show; + showTime[speeds_index] = millis(); + + speeds[speeds_index]=speedfloat; + randRot[speeds_index] = random(-PI/10,PI/10); + randPosX[speeds_index] = int(width/2+width*random(-0.18,0.18)); + + updateCubes=true; + + Date d=new Date(); + + println(d.getTime()+";"+speedfloat); + //pw.println(d.getTime()+";"+speedfloat); + //pw.flush(); + appendTextToFile("speeds.txt",d.getTime()+";"+speedfloat); + + unitdisplay=int(random(0,unitdisplay_count)); + println("unitdisplay: "+unitdisplay); + + triggerspeedmin=getTimesPercentile(0.8); + //triggerspeedmin=getTimesMax(); + sendSpeedTrapValue(int(triggerspeedmin)); + + myServer.write(str(speedfloat)); + } + + } + + + + background(0); + colorMode(RGB, 255,255,255); + //fill(0,132,176); //35c3 + fill(254,80,0); //36c3 + + //textSize(100); + + + + for (int i=speeds_show;i>0;i--){ + //text( nf(speeds[(speeds_show+speeds_index-1+i)%speeds_show], 1,2) + " km/h", xtextstart, lastytextpos); + int _speedIndex=(speeds_show+speeds_index-1+i)%speeds_show; + + long _cshowTime=millis()-showTime[_speedIndex]; + float _dim=1-constrain(_cshowTime/3000.0,0.0,1.0); //start at 1, goes down to 0 and stays there + fill(254*_dim,80*_dim,0); //36c3 + + textFont(font2amBig); + textAlign(CENTER, CENTER); + //text(nf(speeds[_speedIndex], 1,2) + " km/h" ,randPosX[_speedIndex],randPosY[_speedIndex]); + translate(randPosX[_speedIndex],randPosY[_speedIndex]); + rotate(randRot[_speedIndex]); + text(nf(speeds[_speedIndex], 1,2) + " km/h" ,0,0); + rotate(-randRot[_speedIndex]); //rotate back + translate(-randPosX[_speedIndex],-randPosY[_speedIndex]); //translate back + + } + + + /* + textSize(40); + text( "speed trap: "+nf(triggerspeedmin,1,1) +" km/h", 10, height-50); + */ + + + + + if (spoutactive){ + spout.sendTexture(); + } + + if (updateCubes) { + if (useCubes) { + colorMode(HSB, 360, 100, 100); + color col = color(random(0,360), 50, 50); + /*int _r=int(random(0,255)); + int _g=int(random(0,255)); + int _b=int(random(0,255));*/ + //colorMode(RGB, 255,255,255); + int _r=int(red(col)); + int _g=int(green(col)); + int _b=int(blue(col)); + + + myCubes.write("B,"+cubecounter+",10,"+_r+","+_g+","+_b+ 'X'); + + + + println("B,"+cubecounter+",10,"+_r+","+_g+","+_b+ 'X'); + cubecounter++; + if (cubecounter>50){ + updateCubes=false; + cubecounter=30; + } + + } + } + + +} + + +void keyPressed() { //for testing + if (key == 't') { + println("t"); + + speedfloat=random(50); + + + speeds_index++; + speeds_index%=speeds_show; + showTime[speeds_index] = millis(); + + speeds[speeds_index]=speedfloat; + randRot[speeds_index] = random(-PI/10,PI/10); + randPosX[speeds_index] = int(width/2+width*random(-0.18,0.18)); + + updateCubes=true; + } +} + +float getTimesMax(){ + float speedmax=0; + for (int i=0;i