Sisukord:

聲納: 4 sammu
聲納: 4 sammu

Video: 聲納: 4 sammu

Video: 聲納: 4 sammu
Video: 張語噥 Sammy -【No More】Official MV 2024, Juuli
Anonim
聲納
聲納

改作:

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

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

功能: 掃描 到 物品 時 加速 並 傳 述 到 電腦 , 物品 10 cm

1. samm: 1. samm

1. samm
1. samm

這 是 電路圖

2. samm: 2. samm 寫 程式 (arduino)

2. samm 寫 程式 (arduino)
2. samm 寫 程式 (arduino)

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

3. samm: 3. samm 寫 程式 (töötlemine)

impordi töötlemine.seriaalne.*;

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

Seeria myPort; PFont orcFont; int iAngle; int iDistance; void setup () {suurus (1000, 500); sile (); myPort = uus seeria (see, "COM7", 9600); myPort.clear (); myPort.bufferUntil ('\ n');

} tühine viik () {täitma (98, 245, 31); noStroke (); täitke (0, 4); otse (0, 0, laius, 0,935 * kõrgus); täitke (98, 245, 31); DrawRadar (); DrawLine (); DrawObject (); DrawText (); } void serialEvent (Serial myPort) {try {String data = myPort.readStringUntil ('\ n'); if (andmed == null) {return; } int commaIndex = andmed.indexOf (","); String nurk = andmed.alamstring (0, komaindeks); Stringi kaugus = andmed.alamstring (komaindeks+1, andmed.pikkus ()-1); iAngle = StringToInt (nurk); iDistance = StringToInt (kaugus); } catch (RuntimeException e) {}} void DrawRadar () {pushMatrix (); tõlkima (laius/2, 0,926 * kõrgus); noFill (); löökKaal (2); insult (98, 245, 31); // joonistab kaarejooned DrawRadarArcLine (0,9375); DrawRadarArcLine (0,7300); DrawRadarArcLine (0,5210); DrawRadarArcLine (0,3130); // joonistab nurgajooned lõplikult int poolWidth = width/2; joon (-poollaius, 0, poollaius, 0); for (int nurk = 30; nurk <= 150; nurk+= 30) {DrawRadarAngledLine (nurk); } rida (-poollaius * cos (radiaanid (30)), 0, poollaius, 0); popMatrix (); } tühine DrawRadarArcLine (lõplik ujukitegur) {arc (0, 0, koefitsient * laius, koefitsient * laius, PI, TWO_PI); } void DrawRadarAngledLine (lõplik int nurk) {line (0, 0, (-laius/2) * cos (radiaanid (nurk)), (-laius/2) * sin (radiaanid (nurk))); } tühi DrawObject () {pushMatrix (); tõlkima (laius/2, 0,926 * kõrgus); löökKaal (9); insult (255, 10, 10); int pixsDistance = int (iDistance * 0,020835 * kõrgus); kui (iDistance 40? "Range Out": "In Range"), 0,125 * laius, 0,9723 * kõrgus); tekst ("Nurk:" + iAngle + "°", 0,52 * laius, 0,9723 * kõrgus); tekst ("Kaugus:", 0,74 * laius, 0,9723 * kõrgus); if (iDistance <40) {text ("" + iDistance + "cm", 0,775 * laius, 0,9723 * kõrgus); } textSize (25); täitke (98, 245, 60); tõlkima (0,5006 * laius + laius/2 * cos (radiaanid (30)), 0,9093 * kõrgus - laius/2 * sin (radiaanid (30))); pöörlema (-radiaanid (-60)); tekst ("30 °", 0, 0); resetMatrix (); tõlkima (0,497 * laius + laius/2 * cos (radiaanid (60)), 0,9112 * kõrgus - laius/2 * sin (radiaanid (60))); pöörlema (-radiaanid (-30)); tekst ("60 °", 0, 0); resetMatrix (); tõlkima (0,493 * laius + laius/2 * cos (radiaanid (90)), 0,9167 * kõrgus - laius/2 * sin (radiaanid (90))); pöörlema (radiaanid (0)); tekst ("90 °", 0, 0); resetMatrix (); tõlkima (0,487 * laius + laius/2 * cos (radiaanid (120)), 0,92871 * kõrgus - laius/2 * sin (radiaanid (120))); pöörlema (radiaanid (-30)); tekst ("120 °", 0, 0); resetMatrix (); tõlkima (0,4896 * laius + laius/2 * cos (radiaanid (150)), 0,9426 * kõrgus - laius/2 * sin (radiaanid (150))); pöörlema (radiaanid (-60)); tekst ("150 °", 0, 0); popMatrix (); }

int StringToInt (String string) {int väärtus = 0; jaoks (int i = 0; i = '0' && string.charAt (i) <= '9') {väärtus *= 10; väärtus += (string.charAt (i) - '0'); }} tagastamisväärtus;}

Soovitan: