INHOUDSOPGAWE:

聲納: 4 stappe
聲納: 4 stappe

Video: 聲納: 4 stappe

Video: 聲納: 4 stappe
Video: Германский веломотор MAW 1955 года! Разборка, обзор конструкции 2024, Julie
Anonim
聲納
聲納

改作:

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

材料: arduino uno, 超音波 感測器, 驅動 馬達, 喇叭

功能: 10 cm 時 喇叭 時 加速 述 述 到 接近 接近 接近 接近

Stap 1: Stap 1 電路圖

Stap 1
Stap 1

是 電路圖

Stap 2: Stap 2 寫 程式 (arduino)

Stap 2 ar 程式 (arduino)
Stap 2 ar 程式 (arduino)

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

Stap 3: Stap 3 寫 程式 (verwerking)

invoerverwerking.reeks.*;

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

Seriële myPort; PFont orcFont; int iAngle; int iDistance; ongeldige opstelling () {grootte (1000, 500); glad (); myPort = new Serial (hierdie, "COM7", 9600); myPort.clear (); myPort.bufferUntil ('\ n');

} ongeldig trek () {vul (98, 245, 31); noStroke (); vul (0, 4); reg (0, 0, breedte, 0,935 * hoogte); fill (98, 245, 31); DrawRadar (); DrawLine (); DrawObject (); DrawText (); } ongeldig serialEvent (Serial myPort) {probeer {String data = myPort.readStringUntil ('\ n'); as (data == null) {opgawe; } int commaIndex = data.indexOf (","); Stringhoek = data.substring (0, kommaIndex); Stringafstand = data.substring (kommaIndex+1, data.lengte ()-1); iAngle = StringToInt (hoek); iDistance = StringToInt (afstand); } catch (RuntimeException e) {}} void DrawRadar () {pushMatrix (); vertaal (breedte/2, 0,926 * hoogte); noFill (); beroertegewig (2); beroerte (98, 245, 31); // teken die booglyne DrawRadarArcLine (0.9375); DrawRadarArcLine (0,7300); DrawRadarArcLine (0.5210); DrawRadarArcLine (0.3130); // teken die hoeklyne finale int halfBreedte = breedte/2; line (-halfWidth, 0, halfWidth, 0); vir (int hoek = 30; hoek <= 150; hoek+= 30) {DrawRadarAngledLine (hoek); } lyn (-halfWidth * cos (radiale (30)), 0, halfWidth, 0); popMatrix (); } void DrawRadarArcLine (finale vlotkoëffisiënt) {boog (0, 0, koëffisiënt * breedte, koëffisiënt * breedte, PI, TWO_PI); } void DrawRadarAngledLine (finale int hoek) {line (0, 0, (-width/2) * cos (radialen (hoek)), (-width/2) * sin (radialen (hoek))); } ongeldig DrawObject () {pushMatrix (); vertaal (breedte/2, 0,926 * hoogte); beroertegewig (9); beroerte (255, 10, 10); int pixsDistance = int (iDistance * 0.020835 * hoogte); if (iDistance 40? "Out of Range": "In Range"), 0,125 * breedte, 0,9723 * hoogte); teks ("Hoek:" + iAngle + "°", 0,52 * breedte, 0,9723 * hoogte); teks ("Afstand:", 0,74 * breedte, 0,9723 * hoogte); as (iDistance <40) {text ("" + iDistance + "cm", 0,775 * breedte, 0,9723 * hoogte); } textSize (25); fill (98, 245, 60); translate (0.5006 * breedte + breedte/2 * cos (radiale (30)), 0.9093 * hoogte - breedte/2 * sin (radiale (30)))); draai (-radiane (-60)); teks ("30 °", 0, 0); resetMatrix (); translate (0.497 * breedte + breedte/2 * cos (radiale (60)), 0.9112 * hoogte - breedte/2 * sin (radiale (60)))); draai (-radians (-30)); teks ("60 °", 0, 0); resetMatrix (); translate (0.493 * breedte + breedte/2 * cos (radiale (90)), 0.9167 * hoogte - breedte/2 * sin (radiale (90)))); draai (radiale (0)); teks ("90 °", 0, 0); resetMatrix (); translate (0.487 * breedte + breedte/2 * cos (radiale (120)), 0.92871 * hoogte - breedte/2 * sin (radiale (120)))); draai (radiale (-30)); teks ("120 °", 0, 0); resetMatrix (); translate (0.4896 * breedte + breedte/2 * cos (radiale (150)), 0.9426 * hoogte - breedte/2 * sin (radiale (150)))); draai (radiale (-60)); teks ("150 °", 0, 0); popMatrix (); }

int StringToInt (string string) {int waarde = 0; for (int i = 0; i = '0' && string.charAt (i) <= '9') {waarde *= 10; waarde += (string.charAt (i) - '0'); }} opbrengswaarde;}

Aanbeveel: