Sisällysluettelo:

聲納: 4 vaihetta
聲納: 4 vaihetta

Video: 聲納: 4 vaihetta

Video: 聲納: 4 vaihetta
Video: Записали ГОЛОСА ПРИЗРАКОВ † ночью НА КЛАДБИЩЕ † Охота на Призраков † ЭГФ Часть 2 2024, Heinäkuu
Anonim
聲納
聲納

改作:

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

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

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

Vaihe 1: Vaihe 1 電路圖

Vaihe 1 電路圖
Vaihe 1 電路圖

這 是 電路圖

Vaihe 2: Vaihe 2 寫 程式 (arduino)

Vaihe 2 寫 程式 (arduino)
Vaihe 2 寫 程式 (arduino)

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

Vaihe 3: Vaihe 3 寫 程式 (käsittely)

tuonti käsittely. sarja.*;

tuo java.awt.event. KeyEvent; tuoda java.io. IOException;

Sarja myPort; PFont orcFont; int iAngle; int iDistance; void setup () {koko (1000, 500); sileä(); myPort = uusi sarja (tämä, "COM7", 9600); myPort.clear (); myPort.bufferUntil ('\ n');

} mitätön draw () {fill (98, 245, 31); noStroke (); täyttö (0, 4); suora (0, 0, leveys, 0,935 * korkeus); täyttö (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 (","); Merkkijonokulma = data.substring (0, commaIndex); Merkkijonon etäisyys = data.substring (pilkkuindeksi+1, data.length ()-1); iAngle = StringToInt (kulma); iDistance = StringToInt (etäisyys); } catch (RuntimeException e) {}} void DrawRadar () {pushMatrix (); kääntää (leveys/2, 0,926 * korkeus); noFill (); iskuPaino (2); aivohalvaus (98, 245, 31); // piirtää kaariviivat DrawRadarArcLine (0.9375); DrawRadarArcLine (0,7300); DrawRadarArcLine (0,5210); DrawRadarArcLine (0,3130); // piirtää kulmaviivat lopulliseen int halfWidth = width/2; viiva (-puolileveys, 0, puolileveys, 0); for (int kulma = 30; kulma <= 150; kulma+= 30) {DrawRadarAngledLine (kulma); } viiva (-puolileveys * cos (radiaanit (30))), 0, puolileveys, 0); popMatrix (); } void DrawRadarArcLine (lopullinen kellukerroin) {arc (0, 0, kerroin * leveys, kerroin * leveys, PI, TWO_PI); } void DrawRadarAngledLine (lopullinen int-kulma) {line (0, 0, (-leveys/2) * cos (radiaanit (kulma)), (-leveys/2) * sin (radiaanit (kulma))); } mitätön DrawObject () {pushMatrix (); kääntää (leveys/2, 0,926 * korkeus); iskuPaino (9); aivohalvaus (255, 10, 10); int pixsDistance = int (iDistance * 0,020835 * korkeus); jos (iDistance 40? "Out of Range": "In Range"), 0,125 * leveys, 0,9723 * korkeus); teksti ("Kulma:" + iAngle + "°", 0,52 * leveys, 0,9723 * korkeus); teksti ("Etäisyys:", 0,74 * leveys, 0,9723 * korkeus); if (iDistance <40) {text ("" + iDistance + "cm", 0,775 * leveys, 0,9723 * korkeus); } textSize (25); täyttö (98, 245, 60); kääntää (0,5006 * leveys + leveys/2 * cos (radiaanit (30))), 0,9093 * korkeus - leveys/2 * sin (radiaanit (30))); kiertää (-radiaanit (-60)); teksti ("30 °", 0, 0); resetMatrix (); kääntää (0,497 * leveys + leveys/2 * cos (radiaanit (60)), 0,9112 * korkeus - leveys/2 * sin (radiaanit (60))); kiertää (-radiaanit (-30)); teksti ("60 °", 0, 0); resetMatrix (); kääntää (0,493 * leveys + leveys/2 * cos (radiaanit (90))), 0,9167 * korkeus - leveys/2 * sin (radiaanit (90))); kiertää (radiaanit (0)); teksti ("90 °", 0, 0); resetMatrix (); kääntää (0,487 * leveys + leveys/2 * cos (radiaanit (120))), 0,92871 * korkeus - leveys/2 * sin (radiaanit (120))); kiertää (radiaanit (-30)); teksti ("120 °", 0, 0); resetMatrix (); kääntää (0,4896 * leveys + leveys/2 * cos (radiaanit (150)), 0,9426 * korkeus - leveys/2 * sin (radiaanit (150))); kiertää (radiaanit (-60)); teksti ("150 °", 0, 0); popMatrix (); }

int StringToInt (Merkkijono) {int arvo = 0; for (int i = 0; i = '0' && string.charAt (i) <= '9') {arvo *= 10; arvo += (string.charAt (i) - '0'); }} palautusarvo;}

Suositeltava: