Turinys:

聲納: 4 žingsniai
聲納: 4 žingsniai

Video: 聲納: 4 žingsniai

Video: 聲納: 4 žingsniai
Video: 1 月 4 日是个神奇的日子:不要这样做,以免麻烦和缺钱来到家里 2024, Liepa
Anonim
聲納
聲納

改作:

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

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

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

1 žingsnis: 1 žingsnis

1 žingsnis
1 žingsnis

這 是 電路圖

2 veiksmas: 2 žingsnis 寫 程式 (arduino)

2 veiksmas (arduino)
2 veiksmas (arduino)

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

3 žingsnis: 3 veiksmas (apdorojimas)

importo apdorojimas.serijinis.*;

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

Serijinis myPort; PFont orcFont; int iAngle; int iDistance; void setup () {dydis (1000, 500); lygus (); myPort = nauja serija (tai, "COM7", 9600); myPort.clear (); myPort.bufferUntil ('\ n');

} void draw () {fill (98, 245, 31); noStroke (); užpildyti (0, 4); tiesus (0, 0, plotis, 0,935 * aukštis); užpildyti (98, 245, 31); DrawRadar (); DrawLine (); DrawObject (); DrawText (); } void serialEvent (Serial myPort) {try {String data = myPort.readStringUntil ('\ n'); if (data == null) {return; } int commaIndex = data.indexOf (","); Eilutės kampas = data.substring (0, commaIndex); Eilutės atstumas = data.substring (commaIndex+1, data.length ()-1); iAngle = StringToInt (kampas); iDistance = StringToInt (atstumas); } catch (RuntimeException e) {}} void DrawRadar () {pushMatrix (); versti (plotis/2, 0,926 * aukštis); noFill (); smūgisSvoris (2); insultas (98, 245, 31); // piešia lanko linijas DrawRadarArcLine (0.9375); „DrawRadarArcLine“(0,7300); „DrawRadarArcLine“(0,5210); „DrawRadarArcLine“(0,3130); // piešia kampines linijas final int halfWidth = width/2; linija (-pusės pločio, 0, pusės pločio, 0); for (int kampas = 30; kampas <= 150; kampas+= 30) {DrawRadarAngledLine (kampas); } linija (-pusės plotis * cos (radianai (30))), 0, pusės pločio, 0); popMatrix (); } void DrawRadarArcLine (galutinis plūdės koeficientas) {arc (0, 0, koeficientas * plotis, koeficientas * plotis, PI, TWO_PI); } void DrawRadarAngledLine (galutinis int kampas) {line (0, 0, (-pločio/2) * cos (radianai (kampas)), (-pločio/2) * sin (radianai (kampas))); } void DrawObject () {pushMatrix (); versti (plotis/2, 0,926 * aukštis); smūgisSvoris (9); insultas (255, 10, 10); int pixsDistance = int („iDistance“* 0,020835 * aukštis); jei („iDistance 40?“„Out of Range“: „In Range“), 0,125 * pločio, 0,9723 * aukščio); tekstas ("Kampas:" + iAngle + "°", 0,52 * plotis, 0,9723 * aukštis); tekstas („Atstumas:“, 0,74 * plotis, 0,9723 * aukštis); if (iDistance <40) {text ("" + iDistance + "cm", 0,775 * plotis, 0,9723 * aukštis); } textSize (25); užpildyti (98, 245, 60); išversti (0,5006 * plotis + plotis/2 * cos (radianai (30))), 0,9093 * aukštis - plotis/2 * sin (radianai (30))); pasukti (-radianai (-60)); tekstas ("30 °", 0, 0); resetMatrix (); versti (0,497 * plotis + plotis/2 * cos (radianai (60)), 0,9112 * aukštis - plotis/2 * sin (radianai (60))); pasukti (-radianai (-30)); tekstas ("60 °", 0, 0); resetMatrix (); versti (0,493 * plotis + plotis/2 * cos (radianai (90)), 0,9167 * aukštis - plotis/2 * sin (radianai (90))); pasukti (radianai (0)); tekstas ("90 °", 0, 0); resetMatrix (); versti (0,487 * plotis + plotis/2 * cos (radianai (120))), 0,92871 * aukštis - plotis/2 * sin (radianai (120))); pasukti (radianai (-30)); tekstas ("120 °", 0, 0); resetMatrix (); versti (0,4896 * plotis + plotis/2 * cos (radianai (150)), 0,9426 * aukštis - plotis/2 * sin (radianai (150))); pasukti (radianai (-60)); tekstas ("150 °", 0, 0); popMatrix (); }

int StringToInt (Styginių eilutė) {int reikšmė = 0; (int i = 0; i = '0' && string.charAt (i) <= '9') {vertė *= 10; vertė += (string.charAt (i) - '0'); }} grąžinimo vertė;}

Rekomenduojamas: