ዝርዝር ሁኔታ:

聲納: 4 ደረጃዎች
聲納: 4 ደረጃዎች

ቪዲዮ: 聲納: 4 ደረጃዎች

ቪዲዮ: 聲納: 4 ደረጃዎች
ቪዲዮ: 六四事件:廣場備忘錄- BBC News 中文 |天安門|1989 2024, ሀምሌ
Anonim
聲納
聲納

改作:

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

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

功能: 掃描 到 物品 時 加速 並 接近 cm cm cm cm cm cm cm cm cm 10cm

ደረጃ 1: ደረጃ 1 電路圖

ደረጃ 1
ደረጃ 1

是 電路圖

ደረጃ 2 - ደረጃ 2 程式 程式 (አርዱinoኖ)

ደረጃ 2 (አርዱinoኖ)
ደረጃ 2 (አርዱinoኖ)

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

ደረጃ 3 - ደረጃ 3 程式 程式 (ሂደት)

የማስመጣት ሂደት።

አስመጪ java.awt.event. KeyEvent; ማስመጣት java.io. IOException;

ተከታታይ myPort; PFont orcFont; int iAngle; int iDistance; ባዶነት ማዋቀር () {መጠን (1000 ፣ 500); ለስላሳ (); myPort = አዲስ ተከታታይ (ይህ ፣ “COM7” ፣ 9600); myPort.clear (); myPort.bufferUntil ('\ n');

} ባዶ ባዶ () {መሙላት (98 ፣ 245 ፣ 31) ፤ noStroke (); መሙላት (0 ፣ 4); ቀጥተኛ (0 ፣ 0 ፣ ስፋት ፣ 0.935 * ቁመት); መሙላት (98 ፣ 245 ፣ 31); DrawRadar (); DrawLine (); DrawObject (); DrawText (); } ባዶነት serialEvent (ተከታታይ myPort) {ይሞክሩ {String data = myPort.readStringUntil ('\ n'); ከሆነ (ውሂብ == ባዶ) {ተመለስ; } int commaIndex = data.indexOf (","); ሕብረቁምፊ አንግል = ውሂብ.substring (0 ፣ commaIndex); ሕብረቁምፊ ርቀት = ውሂብ.substring (commaIndex+1 ፣ data.length ()-1); iAngle = StringToInt (አንግል); iDistance = StringToInt (ርቀት); } መያዝ (RuntimeException e) {}} ባዶ DrawRadar () {pushMatrix () ፤ መተርጎም (ስፋት/2 ፣ 0.926 * ቁመት); noFill (); የጭረት ክብደት (2); ስትሮክ (98 ፣ 245 ፣ 31); // DrawRadarArcLine (0.9375) የቀስት መስመሮችን ይስባል ፤ DrawRadarArcLine (0.7300); DrawRadarArcLine (0.5210); DrawRadarArcLine (0.3130); // የማዕዘን መስመሮችን የመጨረሻ int ግማሽ ወርድ = ስፋት/2 ይሳሉ። መስመር (-ግማሽ ስፋት ፣ 0 ፣ ግማሽ ስፋት ፣ 0); ለ (int angle = 30; አንግል <= 150; አንግል+= 30) {DrawRadarAngledLine (አንግል); } መስመር (-ግማሽ ስፋት * ኮስ (ራዲየኖች (30)) ፣ 0 ፣ ግማሽ ወርድ ፣ 0); ፖፕ ማትሪክስ (); } ባዶ DrawRadarArcLine (የመጨረሻ ተንሳፋፊ Coefficient) {arc (0 ፣ 0 ፣ Coefficient * width, Coefficient * width, PI ፣ TWO_PI); } ባዶ DrawRadarAngledLine (የመጨረሻ int አንግል) {መስመር (0 ፣ 0 ፣ (-ስፋት/2) * ኮስ (ራዲየኖች (አንግል)) ፣ (-ስፋት/2) * ኃጢአት (ራዲየኖች (አንግል))); } ባዶ DrawObject () {pushMatrix (); መተርጎም (ስፋት/2 ፣ 0.926 * ቁመት); የጭረት ክብደት (9); ስትሮክ (255, 10, 10); int pixsDistance = int (iDistance * 0.020835 * ቁመት); ከሆነ (iDistance 40? "ከክልል ውጪ": "በክልል ውስጥ") ፣ 0.125 * ስፋት ፣ 0.9723 * ቁመት); ጽሑፍ ("አንግል:" + iAngle + "°" ፣ 0.52 * ስፋት ፣ 0.9723 * ቁመት); ጽሑፍ ("ርቀት:", 0.74 * ስፋት, 0.9723 * ቁመት); ከሆነ (iDistance <40) {ጽሑፍ ("" + iDistance + "cm" ፣ 0.775 * ስፋት ፣ 0.9723 * ቁመት); } የጽሑፍ መጠን (25); መሙላት (98 ፣ 245 ፣ 60); መተርጎም (0.5006 * ስፋት + ስፋት/2 * ኮስ (ራዲያን (30)) ፣ 0.9093 * ቁመት - ስፋት/2 * ኃጢአት (ራዲያን (30))); ማሽከርከር (-ራዲያን (-60)); ጽሑፍ ("30 °" ፣ 0 ፣ 0); resetMatrix (); መተርጎም (0.497 * ስፋት + ስፋት/2 * ኮስ (ራዲያን (60)) ፣ 0.9112 * ቁመት - ስፋት/2 * ኃጢአት (ራዲያን (60))); ማሽከርከር (-ራዲያን (-30)); ጽሑፍ ("60 °" ፣ 0 ፣ 0); resetMatrix (); መተርጎም (0.493 * ስፋት + ስፋት/2 * ኮስ (ራዲያን (90)) ፣ 0.9167 * ቁመት - ስፋት/2 * ኃጢአት (ራዲያን (90))); አሽከርክር (ራዲያን (0)); ጽሑፍ ("90 °" ፣ 0 ፣ 0); resetMatrix (); መተርጎም (0.487 * ስፋት + ስፋት/2 * ኮስ (ራዲያን (120)) ፣ 0.92871 * ቁመት - ስፋት/2 * ኃጢአት (ራዲያን (120))); ማሽከርከር (ራዲያን (-30)); ጽሑፍ ("120 °" ፣ 0 ፣ 0); resetMatrix (); መተርጎም (0.4896 * ስፋት + ስፋት/2 * ኮስ (ራዲያን (150)) ፣ 0.9426 * ቁመት - ስፋት/2 * ኃጢአት (ራዲያን (150))); አሽከርክር (ራዲያን (-60)); ጽሑፍ ("150 °" ፣ 0 ፣ 0); ፖፕ ማትሪክስ (); }

int StringToInt (ሕብረቁምፊ ሕብረቁምፊ) {int value = 0; ለ (int i = 0; i = '0' && string.charAt (i) <= '9') {እሴት *= 10; እሴት += (string.charAt (i) - '0'); }} የመመለሻ እሴት ፤}

የሚመከር: