Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import processing.serial.*;
- import java.awt.event.KeyEvent;
- import java.io.IOException;
- Serial myPort;
- String angle = "";
- String distance = "";
- String data = "";
- String noObject;
- float pixsDistance;
- int iAngle, iDistance;
- int index1 = 0;
- int index2 = 0;
- PFont orcFont;
- void setup() {
- size (1290, 760); // DISPLAY GRÖßE EINTRAGEN /Auflösung
- smooth();
- myPort = new Serial(this, "COM3", 9600);
- myPort.bufferUntil('.');
- orcFont = loadFont("AlbertusMedium-48.vlw");
- }
- void draw() {
- fill(98, 245, 31);
- textFont(orcFont);
- noStroke();
- fill(0, 4);
- rect(0, 0, width, height - height * 0.065);
- fill(98, 245, 31);
- drawRadar();
- drawLine();
- drawObject();
- drawText();
- }
- void serialEvent (Serial myPort) {
- data = myPort.readStringUntil('.');
- data = data.substring(0, data.length() - 1);
- index1 = data.indexOf(",");
- angle = data.substring(0, index1);
- distance = data.substring(index1 + 1, data.length());
- // von String auf Integer
- iAngle = int(angle);
- iDistance = int(distance);
- }
- void drawRadar() {
- pushMatrix();
- translate(width / 2, height - height * 0.074); // start koordinaten werden festgelegt
- noFill();
- strokeWeight(2);
- stroke(#FFFFFF);
- arc(0, 0, (width - width * 0.0625), (width - width * 0.0625), PI, TWO_PI);
- arc(0, 0, (width - width * 0.27), (width - width * 0.27), PI, TWO_PI);
- arc(0, 0, (width - width * 0.479), (width - width * 0.479), PI, TWO_PI);
- arc(0, 0, (width - width * 0.687), (width - width * 0.687), PI, TWO_PI);
- line(-width / 2, 0, width / 2, 0);
- line(0, 0, (-width / 2)*cos(radians(30)), (-width / 2)*sin(radians(30)));
- line(0, 0, (-width / 2)*cos(radians(60)), (-width / 2)*sin(radians(60)));
- line(0, 0, (-width / 2)*cos(radians(90)), (-width / 2)*sin(radians(90)));
- line(0, 0, (-width / 2)*cos(radians(120)), (-width / 2)*sin(radians(120)));
- line(0, 0, (-width / 2)*cos(radians(150)), (-width / 2)*sin(radians(150)));
- line((-width / 2)*cos(radians(30)), 0, width / 2, 0);
- popMatrix();
- }
- void drawObject() {
- pushMatrix();
- translate(width / 2, height - height * 0.074);
- strokeWeight(9);
- stroke(#FF0004);
- pixsDistance = iDistance * ((height - height * 0.1666) * 0.025); // von cm auf pixel
- // limitierung auf max 40 cm
- if (iDistance < 40) {
- line(pixsDistance * cos(radians(iAngle)), -pixsDistance * sin(radians(iAngle)), (width - width * 0.505)*cos(radians(iAngle)), -(width - width * 0.505)*sin(radians(iAngle)));
- }
- popMatrix();
- }
- void drawLine() {
- pushMatrix();
- strokeWeight(9);
- stroke(#00FF0E);
- translate(width / 2, height - height * 0.074);
- line(0, 0, (height - height * 0.16)*cos(radians(iAngle)), -(height - height * 0.16)*sin(radians(iAngle)));
- popMatrix();
- }
- void drawText() { // text auf display ausgeben
- pushMatrix();
- if (iDistance > 40) {
- noObject = "Außer Reichweite";
- } else {
- noObject = "In Reichweite";
- }
- fill(0, 0, 0);
- noStroke();
- rect(0, height - height * 0.0648, width, height);
- fill(#FFFFFF);
- textSize(25);
- text("10cm", width - width * 0.4154, height - height * 0.0833);
- text("20cm", width - width * 0.3010, height - height * 0.0833);
- text("30cm", width - width * 0.1970, height - height * 0.0833);
- text("40cm", width - width * 0.1045, height - height * 0.0833);
- textSize(40);
- text("Winkel: " + iAngle + " °", width - width * 0.48, height - height * 0.0277);
- text("Objekt: " + noObject, width - width * 0.875, height - height * 0.0277);
- text("Distanz: ", width - width * 0.29, height - height * 0.0277);
- if (iDistance < 40) {
- text(" " + iDistance + " cm", width - width * 0.225, height - height * 0.0277);
- }
- textSize(25);
- fill(#FFFFFF);
- translate((width - width * 0.4994) + width / 2 * cos(radians(30)), (height - height * 0.0907) - width / 2 * sin(radians(30)));
- rotate(-radians(-30));
- text("30°", 0, 0);
- resetMatrix();
- translate((width - width * 0.503) + width / 2 * cos(radians(60)), (height - height * 0.0888) - width / 2 * sin(radians(60)));
- rotate(-radians(-30));
- text("60°", 0, 0);
- resetMatrix();
- translate((width - width * 0.507) + width / 2 * cos(radians(90)), (height - height * 0.0833) - width / 2 * sin(radians(90)));
- rotate(radians(0));
- text("90°", 0, 0);
- resetMatrix();
- translate(width - width * 0.513 + width / 2 * cos(radians(120)), (height - height * 0.07129) - width / 2 * sin(radians(120)));
- rotate(radians(-30));
- text("120°", 0, 0);
- resetMatrix();
- translate((width - width * 0.5104) + width / 2 * cos(radians(150)), (height - height * 0.0574) - width / 2 * sin(radians(150)));
- rotate(radians(-30));
- text("150°", 0, 0);
- popMatrix();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement