Spisu treści:

聲納: 4 kroki
聲納: 4 kroki

Wideo: 聲納: 4 kroki

Wideo: 聲納: 4 kroki
Wideo: Диагностика гбо 4 поколения своими руками 2024, Listopad
Anonim
聲納
聲納

改作:

我 在 原本 聲納 的 基礎 下 加裝 了 喇叭 以 達到 警告 的 作用

: arduino uno,, 驅動馬達, 功能: 掃描到物品時加速並傳述到電腦,物品接近10 cm時喇叭會警告

Krok 1: Krok 1 電路圖

Krok 1 電路圖
Krok 1 電路圖

這 是 電路圖

Krok 2: Krok 2 寫程式(arduino)

Krok 2 寫程式(arduino)
Krok 2 寫程式(arduino)

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

Krok 3: Krok 3 寫程式(przetwarzanie)

importowanie przetwarzania.serial.*;

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

port szeregowy myPort; PFont orcCzcionka; wewn. kąt; int iOdległość; void setup() { size(1000, 500); gładki(); myPort = new Serial(this, "COM7", 9600); mójPort.clear(); myPort.bufferUntil('\n');

} void draw() { fill(98, 245, 31); noStroke(); wypełnienie (0, 4); prostokąt (0, 0, szerokość, 0,935 * wysokość); wypełnić (98, 245, 31); DrawRadar(); Rysować linię(); DrawObiekt(); RysujTekst(); } void serialEvent (Serial myPort) { spróbuj { String data = myPort.readStringUntil('\n'); if (dane == null) { return; } int commaIndex = data.indexOf(", "); Kąt ciągu = data.substring(0, commaIndex); Odległość ciągu = data.substring(commaIndex+1, data.length()-1); iAngle = StringToInt(kąt); iDistance = StringToInt(odległość); } catch(RuntimeException e) {} } void DrawRadar() { pushMatrix(); przetłumacz(szerokość/2, 0,926 * wysokość); Nie wypełniać(); obrysWaga(2); udar (98, 245, 31); // rysuje linie łuku DrawRadarArcLine(0.9375); DrawRadarArcLine(0.7300); DrawRadarArcLine(0.5210); DrawRadarArcLine(0.3130); // rysuje linie kątów final int halfWidth = width/2; line(-halfWidth, 0, halfWidth, 0); for(int kąt = 30; kąt <= 150; kąt+=30) { DrawRadarAngledLine(kąt); } line(-halfWidth * cos(radiany(30)), 0, halfWidth, 0); popMatrix(); } void DrawRadarArcLine(final float factor) { arc(0, 0, współczynnik * szerokość, współczynnik * szerokość, PI, DWA_PI); } void DrawRadarAngledLine(końcowy kąt int){ line(0, 0, (-width/2) * cos(radiany(kąt)), (-width/2) * sin(radiany(kąt))); } void DrawObject() { pushMatrix(); przetłumacz(szerokość/2, 0,926 * wysokość); obrysWaga(9); udar (255, 10, 10); int pixsDistance = int(iodległość * 0,020835 * wysokość); if(iDistance 40 ? "Poza zakresem": "W zakresie"), 0,125 * szerokość, 0,9723 * wysokość); text("Kąt: " + iAngle + " °", 0,52 * szerokość, 0,9723 * wysokość); text("Odległość: ", 0,74 * szerokość, 0,9723 * wysokość); if(iDistance < 40) { text(" " + iDistance +" cm", 0,775 * szerokość, 0,9723 * wysokość); } Rozmiar tekstu(25); wypełnić (98, 245, 60); przetłumacz(0.5006 * szerokość + szerokość/2 * cos(radiany(30)), 0.9093 * wysokość - szerokość/2 * sin(radiany(30))); obróć(-radiany(-60)); tekst("30°", 0, 0); resetuj macierz(); przetłumacz(0,497 * szerokość + szerokość/2 * cos(radiany(60)), 0,9112 * wysokość - szerokość/2 * sin(radiany(60))); obróć(-radiany(-30)); tekst("60°", 0, 0); resetowanie macierzy(); przetłumacz(0,493 * szerokość + szerokość/2 * cos(radiany(90)), 0,9167 * wysokość - szerokość/2 * sin(radiany(90))); obróć(radiany(0)); tekst("90°", 0, 0); resetuj macierz(); przetłumacz(0,487 * szerokość + szerokość/2 * cos(radiany(120)), 0,92871 * wysokość - szerokość/2 * sin(radiany(120))); obróć(radiany(-30)); tekst("120°", 0, 0); resetuj macierz(); przetłumacz(0,4896 * szerokość + szerokość/2 * cos(radiany(150)), 0,9426 * wysokość - szerokość/2 * sin(radiany(150))); obróć(radiany(-60)); tekst("150°", 0, 0); popMatrix(); }

int StringToInt(String string) { int wartość = 0; for(int i = 0; i = '0' && string.charAt(i) <= '9') { value *= 10; wartość += (string.charAt(i) - '0'); }} zwracana wartość;}

Zalecana: