Satura rādītājs:

聲納: 4 soļi
聲納: 4 soļi

Video: 聲納: 4 soļi

Video: 聲納: 4 soļi
Video: Aksum& 聲納吹嘴 Tenor MK6 實測分享 2024, Jūlijs
Anonim
聲納
聲納

改作:

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

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

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

1. darbība: 1. darbība

1. solis
1. solis

這 是 電路圖

2. darbība: 2. darbība 寫 程式 (arduino)

2. darbība 寫 程式 (arduino)
2. darbība 寫 程式 (arduino)

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

3. darbība: 3. darbība (apstrāde)

importa apstrāde.sērija.*;

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

Sērijas myPort; PFont orcFont; int iAngle; int iDistance; void setup () {izmērs (1000, 500); gluda (); myPort = jauns seriāls (šis, "COM7", 9600); myPort.clear (); myPort.bufferUntil ('\ n');

} void draw () {fill (98, 245, 31); noStroke (); aizpildīt (0, 4); taisns (0, 0, platums, 0,935 * augstums); aizpildīt (98, 245, 31); DrawRadar (); DrawLine (); DrawObject (); DrawText (); } void serialEvent (Serial myPort) {try {String data = myPort.readStringUntil ('\ n'); ja (dati == null) {return; } int commaIndex = data.indexOf (","); Stīgu leņķis = data.substring (0, commaIndex); Stīgu attālums = data.substring (commaIndex+1, data.length ()-1); iAngle = StringToInt (leņķis); iDistance = StringToInt (attālums); } catch (RuntimeException e) {}} void DrawRadar () {pushMatrix (); tulkot (platums/2, 0,926 * augstums); noFill (); insultsSvars (2); insults (98, 245, 31); // zīmē loka līnijas DrawRadarArcLine (0.9375); DrawRadarArcLine (0,7300); DrawRadarArcLine (0,5210); DrawRadarArcLine (0,3130); // zīmē leņķa līnijas gala int halfWidth = width/2; līnija (-puse platums, 0, puse platums, 0); par (int leņķis = 30; leņķis <= 150; leņķis+= 30) {DrawRadarAngledLine (leņķis); } line (-halfWidth * cos (radians (30))), 0, halfWidth, 0); popMatrix (); } void DrawRadarArcLine (galīgais pludiņa koeficients) {arc (0, 0, koeficients * platums, koeficients * platums, PI, TWO_PI); } void DrawRadarAngledLine (galīgais int leņķis) {line (0, 0, (-platums/2) * cos (radiāni (leņķis)), (-platums/2) * sin (radiāni (leņķis))); } void DrawObject () {pushMatrix (); tulkot (platums/2, 0,926 * augstums); insultsSvars (9); insults (255, 10, 10); int pixsDistance = int (iDistance * 0,020835 * augstums); ja (iDistance 40? "Out of Range": "In Range"), 0,125 * platums, 0,9723 * augstums); teksts ("Leņķis:" + iAngle + "°", 0,52 * platums, 0,9723 * augstums); teksts ("Attālums:", 0,74 * platums, 0,9723 * augstums); ja (iDistance <40) {text ("" + iDistance + "cm", 0,775 * platums, 0,9723 * augstums); } textSize (25); aizpildīt (98, 245, 60); tulkot (0,5006 * platums + platums/2 * cos (radiāni (30)), 0,9093 * augstums - platums/2 * sin (radiāni (30))); rotēt (-radiānus (-60)); teksts ("30 °", 0, 0); resetMatrix (); tulkot (0,497 * platums + platums/2 * cos (radiāni (60)), 0,9112 * augstums - platums/2 * sin (radiāni (60))); rotēt (-radiānus (-30)); teksts ("60 °", 0, 0); resetMatrix (); tulkot (0,493 * platums + platums/2 * cos (radiāni (90)), 0,9167 * augstums - platums/2 * sin (radiāni (90))); pagriezt (radiāni (0)); teksts ("90 °", 0, 0); resetMatrix (); tulkot (0,487 * platums + platums/2 * cos (radiāni (120))), 0,92871 * augstums - platums/2 * sin (radiāni (120))); pagriezt (radiāni (-30)); teksts ("120 °", 0, 0); resetMatrix (); tulkot (0,4896 * platums + platums/2 * cos (radiāni (150))), 0,9426 * augstums - platums/2 * sin (radiāni (150))); pagriezt (radiāni (-60)); teksts ("150 °", 0, 0); popMatrix (); }

int StringToInt (String string) {int vērtība = 0; par (int i = 0; i = '0' && string.charAt (i) <= '9') {vērtība *= 10; vērtība += (string.charAt (i) - '0'); }} atgriešanās vērtība;}

Ieteicams: