Stap 4: Meer code!
Open de verwerking IDE en kopieer de volgende code naar een nieuw bestand van de schets:
importeren van processing.serial.*; Invoer bibliotheek voor seriële communicatie
importeren van java.awt.event.KeyEvent; Invoer bibliotheek voor het lezen van de gegevens van de seriële poort importeren java.io.IOException; Seriële myPort; Definieert Object Serial
Hiermee definieert u de benodigde variabelen String hoek = ""; Afstand string = ""; Gegevens string = ""; String noObject; float pixsDistance; int iAngle, iDistance; int index1 = 0; int index2 = 0; PFont orcFont;
void setup {formaat (1280, 720); / / schermresolutie smooth(); myPort = nieuwe Serial (this,"/dev/cu.usbmodemfa131", 9600); / / de seriële communicatie begint met het registreren van de seriële poort (moet in de Arduino gebruiken om te werken, maar het verschilt ook van Windows naar Mac) myPort.bufferUntil('.'); / / leest de gegevens van de seriële poort (hoek en afstand)}
VOID draw() {fill(98,245,31); / / geeft het effect van de motion blur en de langzame fade bewegende line noStroke(); fill(0,4); rect (0, 0, breedte-, hoogte-hoogte * 0,065); fill(98,245,31); / / Code voor de groene kleur / / functies voor het tekenen van de radar-drawRadar(); drawLine(); drawObject(); drawText();}
VOID serialEvent (seriële myPort) {/ / Code om te beginnen met het lezen van gegevens uit de gegevens van seriële poort = myPort.readStringUntil('.'); gegevens = data.substring(0,data.length()-1); index1 = data.indexOf(","); / / het teken ',' en zet het in de hoek van de variabele "index1" = data.substring (0, index1); / / de gegevens lezen van positie "0" positie van de variabele index1 of dat is de waarde van de hoek de Arduino Board ingestuurd van de seriële poort afstand = data.substring(index1+1 , data.length()); De gegevens lezen vanaf positie "index1" aan het einde van de pr van de gegevens die de waarde aangeeft van de afstand / / verandert de tekenreeksvariabelen in Integer iAngle = int(angle); iDistance = int(distance); }
VOID drawRadar() {/ / Code zodat radar verschijnen op het scherm van de pushMatrix(); translate(width/2,height-height*0.074); / / beweegt de startende coordinats naar nieuwe locatie noFill(); strokeWeight(2); stroke(98,245,31); / / trekt de boog lijnen 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) (breedte-breedte * 0.687), PI, TWO_PI); Trekt de hoek lijnen 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); / / beweegt de startende coordinats naar nieuwe locatie strokeWeight(9); stroke(255,10,10); / / rode kleur pixsDistance = iDistance*((height-height*0.1666)*0.025); / / Covers van de afstand van de sensor van cm naar pixels / / verkleint u het bereik aan 40 cms if(iDistance<40) {/ / tekent het object volgens de hoek en de afstand 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() {/ / Code om te tekenen van de regel (s)-pushMatrix(); strokeWeight(9); stroke(30,250,60); translate(width/2,height-height*0.074); / / de startende coordinats verhuist naar nieuwe locatie line(0,0,(height-height*0.12)*cos(radians(iAngle)),-(height-height*0.12)*sin(radians(iAngle))); / / trekt de lijn volgens de hoek popMatrix();}
VOID drawText() {/ / Code om te tekenen van tekst op het scherm pushMatrix(); if(iDistance>40) {noObject = "Out of Range";} anders {noObject = "In bereik";} fill(0,0,0); noStroke(); rect (0, hoogte-hoogte * 0.0648, breedte, hoogte); fill(98,245,31); textSize(25); text("10cm",width-width*0.3854,height-height*0.0833); text("20cm",width-width*0.281,height-height*0.0833); text("30cm",width-width*0.177,height-height*0.0833); text("40cm",width-width*0.0729,height-height*0.0833); textSize(40); tekst ("Object : "+ noObject, breedte-breedte * 0.875, hoogte-hoogte * 0.0277); tekst ("hoek:" + iAngle + "°", breedte-breedte * 0,48, hoogte-hoogte * 0.0277); tekst ("afstand:", breedte-breedte * 0.26, hoogte-hoogte * 0.0277); if(iDistance<40) {tekst ("" + iDistance + "cm", breedte-breedte * 0,225, hoogte-hoogte * 0.0277);} textSize(25); Fill(98,245,60); Translate((width-width*0.4994)+Width/2*cos(radians(30)),(Height-Height*0.0907)-Width/2*sin(radians(30))); Rotate(-radians(-60)); 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(-60)); Text("150°",0,0); popMatrix(); }
Daarna de code uitvoeren en het moet een nieuw venster openen met de radar weergegeven zoals in de afbeelding. Hierna kun je spelen met de sensor voor een beetje!