Paso 4: Código más!
Abra el IDE de procesamiento y copie el código siguiente en un nuevo archivo de dibujo:
Import processing.serial.*; Biblioteca de importación para la comunicación serial
importación java.awt.event.KeyEvent; Biblioteca de importación para leer los datos desde el puerto serie import java.io.IOException; Serie myPort; Define objeto serie
Define ángulo de variables necesaria cadena = ""; Distancia de cadena = ""; Datos de cadena = ""; String noObject; Float pixsDistance; iAngle int, iDistance; index1 int = 0; 2 int = 0; PFont orcFont;
void setup() {tamaño (1280, 720); / / resolución de pantalla smooth(); myPort = la nueva serie (this,"/dev/cu.usbmodemfa131", 9600); / / comienza la comunicación serial por registrar el puerto serie (debe estar en uso por el Arduino para trabajar, pero también difiere de Windows a Mac) myPort.bufferUntil('.'); / / lee los datos del puerto serie (ángulo y distancia)}
void draw() {fill(98,245,31); / le da el efecto de movimiento blur y el lento se descolora de la mudanza de línea noStroke(); fill(0,4); rect (0, 0, anchura, altura * 0. 065); fill(98,245,31); / / código para el color verde / / funciones para dibujar el radar drawRadar(); drawObject(); drawLine(), drawText();}
void serialEvent (serie myPort) {/ / código para iniciar la lectura de datos de los datos de puerto serie = myPort.readStringUntil('.'); datos = data.substring(0,data.length()-1); index1 = data.indexOf(","); / y el carácter ',' y la pone en el ángulo variable "index1" = data.substring (0, index1); / / lee los datos desde la posición "0" a la posición de la variable index1 o que es el valor del ángulo de la placa Arduino envía en la distancia de puerto Serial = data.substring(index1+1 , data.length()); Leer los datos desde la posición "index1" hasta el final de los datos de pr que es el valor de la distancia / / convierte las variables de cadena en entero iAngle = int(angle); iDistance = int(distance); }
void drawRadar() {/ / código para radar aparece en pantalla pushMatrix(); translate(width/2,height-height*0.074); / / mueve la partida coordinats a nueva ubicación noFill(); strokeWeight(2); stroke(98,245,31); / / dibuja el arco líneas 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) (ancho-ancho * 0.687), PI, TWO_PI); Dibuja el ángulo líneas 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); / / mueve el coordinats partida a nueva ubicación strokeWeight(9); stroke(255,10,10); / / rojo color pixsDistance = iDistance*((height-height*0.1666)*0.025); / / recorre la distancia desde el sensor de cm a pixeles / / limita el rango de 40 cms if(iDistance<40) {/ / dibuja el objeto según el ángulo y la distancia 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() {/ / código para dibujar la línea (s) pushMatrix(); strokeWeight(9); stroke(30,250,60); translate(width/2,height-height*0.074); / / mueve el coordinats partida a nueva ubicación line(0,0,(height-height*0.12)*cos(radians(iAngle)),-(height-height*0.12)*sin(radians(iAngle))); / / dibuja la línea según el ángulo popMatrix();}
anular drawText() {/ / código para dibujar texto en la pantalla pushMatrix(); if(iDistance>40) {noObject = "fuera de rango";} else {noObject = "Margen";} fill(0,0,0); noStroke(); rect (altura de 0, * 0.0648, anchura, altura); 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); texto ("objeto : "+ noObject, ancho-ancho * 0.875, altura * 0.0277); texto ("ángulo:" + iAngle + "°", ancho-ancho * 0.48, altura * 0.0277); texto ("distancia:", ancho-ancho * 0.26, altura * 0.0277); if(iDistance<40) {texto ("" + iDistance + "cm", ancho-ancho * 0.225, altura * 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(); }
Después de esto, ejecute el código y se debe abrir una nueva ventana, con el radar muestra como en la imagen. Después de esto usted puede jugar con el sensor para un poco!