Sommario:

: 4 passaggi
: 4 passaggi

Video: : 4 passaggi

Video: : 4 passaggi
Video: 4 passaggi utili per una buona verniciatura del legno 2024, Dicembre
Anonim
?
?

:https://aboutsciences.com/blog/arduino-radar-using…

?

: arduino uno,, 驅動馬達, 喇叭

:掃描到物品時加速並傳述到電腦,物品接近10cm時喇叭會警告

Passaggio 1: Passaggio 1

Passaggio 1
Passaggio 1

?

Passaggio 2: Passaggio 2 寫程式 (arduino)

Passaggio 2 寫程式 (arduino)
Passaggio 2 寫程式 (arduino)

create.arduino.cc/editor/dwdawdad/ef6b26a2-3f40-410d-9fdd-3413816090fe/preview

Passaggio 3: Passaggio 3 (elaborazione)

import processing.serial.*;

import java.awt.event. KeyEvent; import java.io. IOException;

myPort seriale; PFont orcFont; int iAngle; int iDistance; void setup() { size(1000, 500); liscio(); myPort = new Serial(this, "COM7", 9600); myPort.clear(); myPort.bufferUntil('\n');

} void draw() { fill(98, 245, 31); noStroke(); riempimento(0, 4); rect(0, 0, larghezza, 0,935 * altezza); riempire (98, 245, 31); DisegnaRadar(); Disegnare la linea(); DisegnaOggetto(); DisegnaTesto(); } void serialEvent (Serial myPort) { try { String data = myPort.readStringUntil('\n'); if (dati == null) { ritorno; } int commaIndex = data.indexOf(", "); Angolo della stringa = data.substring(0, commaIndex); Distanza stringa = data.substring(commaIndex+1, data.length()-1); iAngle = StringToInt(angolo); iDistance = StringToInt(distanza); } catch(RuntimeException e) {} } void DrawRadar() { pushMatrix(); translate(larghezza/2, 0,926 * altezza); noFill(); corsaPeso(2); corsa (98, 245, 31); // disegna le linee dell'arco DrawRadarArcLine(0.9375); DisegnaRadarArcLine(0.7300); DisegnaRadarArcLine(0.5210); DrawRadarArcLine(0.3130); // disegna le linee dell'angolo final int halfWidth = width/2; line(-halfWidth, 0, halfWidth, 0); for(int angolo = 30; angolo <= 150; angolo+=30) { DrawRadarAngledLine(angolo); } line(-halfWidth * cos(radianti(30)), 0, halfWidth, 0); popMatrix(); } void DrawRadarArcLine(coefficiente float finale) { arc(0, 0, coefficiente * larghezza, coefficiente * larghezza, PI, DUE_PI); } void DrawRadarAngledLine(final int angle){ line(0, 0, (-width/2) * cos(radianti(angolo)), (-width/2) * sin(radianti(angolo))); } void DisegnaOggetto() { pushMatrix(); translate(larghezza/2, 0,926 * altezza); corsaPeso(9); corsa(255, 10, 10); int pixsDistance = int(iDistance * 0.020835 * height); if(iDistance 40 ? "Fuori intervallo": "In intervallo"), 0,125 * larghezza, 0,9723 * altezza); text("Angolo: " + iAngle + " °", 0,52 * larghezza, 0,9723 * altezza); text("Distanza: ", 0,74 * larghezza, 0,9723 * altezza); if(iDistance < 40) { text(" " + iDistance +" cm", 0,775 * larghezza, 0,9723 * altezza); } dimensione testo(25); riempire (98, 245, 60); translate(0.5006 * larghezza + larghezza/2 * cos(radianti(30)), 0,9093 * altezza - larghezza/2 * sin(radianti(30))); ruotare(-radianti(-60)); testo("30°", 0, 0); resetMatrix(); translate(0.497 * larghezza + larghezza/2 * cos(radianti(60)), 0.9112 * altezza - larghezza/2 * sin(radianti(60))); ruotare(-radianti(-30)); testo("60°", 0, 0); resetMatrix(); translate(0.493 * larghezza + larghezza/2 * cos(radianti(90)), 0,9167 * altezza - larghezza/2 * sin(radianti(90))); ruotare(radianti(0)); testo("90°", 0, 0); resetMatrix(); translate(0.487 * larghezza + larghezza/2 * cos(radianti(120)), 0.92871 * altezza - larghezza/2 * sin(radianti(120))); ruotare(radianti(-30)); testo("120°", 0, 0); resetMatrix(); translate(0,4896 * larghezza + larghezza/2 * cos(radianti(150)), 0,9426 * altezza - larghezza/2 * sin(radianti(150))); ruotare(radianti(-60)); testo("150°", 0, 0); popMatrix(); }

int StringToInt(Stringa stringa) { int valore = 0; for(int i = 0; i = '0' && string.charAt(i) <= '9') { valore *= 10; valore += (string.charAt(i) - '0'); }} valore di ritorno;}

Consigliato: