Indholdsfortegnelse:

聲納: 4 trin
聲納: 4 trin

Video: 聲納: 4 trin

Video: 聲納: 4 trin
Video: Relaxing Train Sounds and Blizzard Howling 2024, November
Anonim
聲納
聲納

改作:

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

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

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

Trin 1: Trin 1 電路圖

Trin 1 電路圖
Trin 1 電路圖

是 電路圖

Trin 2: Trin 2 寫 程式 (arduino)

Trin 2 寫 程式 (arduino)
Trin 2 寫 程式 (arduino)

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

Trin 3: Trin 3 寫 程式 (behandling)

import behandling. serie.*;

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

Seriel myPort; PFont orcFont; int iAngle; int iDistance; ugyldig opsætning () {størrelse (1000, 500); glat(); myPort = ny Seriel (dette, "COM7", 9600); myPort.clear (); myPort.bufferUntil ('\ n');

} void draw () {fill (98, 245, 31); noStroke (); fyld (0, 4); ret (0, 0, bredde, 0,935 * højde); fyld (98, 245, 31); DrawRadar (); DrawLine (); DrawObject (); DrawText (); } ugid serialEvent (Serial myPort) {try {String data = myPort.readStringUntil ('\ n'); hvis (data == null) {return; } int commaIndex = data.indexOf (","); Strenge vinkel = data.substring (0, commaIndex); Strengeafstand = data.substring (commaIndex+1, data.length ()-1); iAngle = StringToInt (vinkel); iDistance = StringToInt (distance); } catch (RuntimeException e) {}} void DrawRadar () {pushMatrix (); translate (bredde/2, 0,926 * højde); noFill (); strokeWeight (2); slagtilfælde (98, 245, 31); // tegner buelinjerne DrawRadarArcLine (0.9375); DrawRadarArcLine (0,7300); DrawRadarArcLine (0,5210); DrawRadarArcLine (0,3130); // tegner vinkellinjerne endelig int halfWidth = bredde/2; line (-halfWidth, 0, halfWidth, 0); for (int vinkel = 30; vinkel <= 150; vinkel+= 30) {DrawRadarAngledLine (vinkel); } linje (-halfWidth * cos (radianer (30)), 0, halfWidth, 0); popMatrix (); } void DrawRadarArcLine (sidste flydende koefficient) {bue (0, 0, koefficient * bredde, koefficient * bredde, PI, TWO_PI); } void DrawRadarAngledLine (sidste int-vinkel) {linje (0, 0, (-bredde/2) * cos (radianer (vinkel)), (-bredde/2) * sin (radianer (vinkel))); } ugyldig DrawObject () {pushMatrix (); translate (bredde/2, 0,926 * højde); strokeWeight (9); slagtilfælde (255, 10, 10); int pixsDistance = int (iDistance * 0.020835 * højde); if (iDistance 40? "Out of Range": "In Range"), 0,125 * bredde, 0,9723 * højde); tekst ("Vinkel:" + iAngle + "°", 0,52 * bredde, 0,9723 * højde); tekst ("Distance:", 0,74 * bredde, 0,9723 * højde); hvis (iDistance <40) {text ("" + iDistance + "cm", 0,775 * bredde, 0,9723 * højde); } textSize (25); fyld (98, 245, 60); translate (0.5006 * bredde + bredde/2 * cos (radianer (30)), 0.9093 * højde - bredde/2 * sin (radianer (30))); rotere (-radianer (-60)); tekst ("30 °", 0, 0); resetMatrix (); translate (0,497 * bredde + bredde/2 * cos (radianer (60)), 0,9112 * højde - bredde/2 * sin (radianer (60))); rotere (-radianer (-30)); tekst ("60 °", 0, 0); resetMatrix (); translate (0,493 * bredde + bredde/2 * cos (radianer (90)), 0,9167 * højde - bredde/2 * sin (radianer (90))); rotere (radianer (0)); tekst ("90 °", 0, 0); resetMatrix (); translate (0,487 * bredde + bredde/2 * cos (radianer (120)), 0,92871 * højde - bredde/2 * sin (radianer (120))); rotere (radianer (-30)); tekst ("120 °", 0, 0); resetMatrix (); translate (0,4896 * bredde + bredde/2 * cos (radianer (150)), 0,9426 * højde - bredde/2 * sin (radianer (150))); rotere (radianer (-60)); tekst ("150 °", 0, 0); popMatrix (); }

int StringToInt (String string) {int værdi = 0; for (int i = 0; i = '0' && string.charAt (i) <= '9') {værdi *= 10; værdi += (string.charAt (i) - '0'); }} returværdi;}

Anbefalede: