Sadržaj:

Broj koraka: 4 koraka
Broj koraka: 4 koraka

Video: Broj koraka: 4 koraka

Video: Broj koraka: 4 koraka
Video: Умножение, деление и сложение дробей #математика #алгебра #дроби #5класс 2024, Studeni
Anonim
聲納
聲納

改作:

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

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

Napomena: 掃描 到 物品 時 加速 並 傳 述 到 , 物品 接近 接近 cm 10 cm 時 喇叭 會 警告

Korak 1: Korak 1 電路圖

Korak 1 電路圖
Korak 1 電路圖

這 是 電路圖

Korak 2: Korak 2 寫 程式 (arduino)

Korak 2 寫 程式 (arduino)
Korak 2 寫 程式 (arduino)

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

Korak 3: Korak 3 processing 程式 (obrada)

uvoz obrada.serial.*;

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

Serijski myPort; PFont orcFont; int iAngle; int iDistance; void setup () {veličina (1000, 500); glatko, nesmetano(); myPort = novi serijski (ovo, "COM7", 9600); myPort.clear (); myPort.bufferUntil ('\ n');

} void draw () {fill (98, 245, 31); noStroke (); ispuniti (0, 4); izravno (0, 0, širina, 0,935 * visina); ispunite (98, 245, 31); DrawRadar (); DrawLine (); DrawObject (); DrawText (); } void serialEvent (Serial myPort) {try {String data = myPort.readStringUntil ('\ n'); if (podatak == null) {return; } int commaIndex = data.indexOf (","); Kut niza = data.substring (0, commaIndex); Udaljenost niza = data.substring (commaIndex+1, data.length ()-1); iAngle = StringToInt (kut); iDistance = StringToInt (udaljenost); } catch (RuntimeException e) {}} void DrawRadar () {pushMatrix (); prevesti (širina/2, 0,926 * visina); noFill (); strokeWeight (2); moždani udar (98, 245, 31); // crta lučne crte DrawRadarArcLine (0.9375); DrawRadarArcLine (0,7300); DrawRadarArcLine (0.5210); DrawRadarArcLine (0,3130); // iscrtava kutne linije final int halfWidth = width/2; linija (-polovina širine, 0, pola širine, 0); za (int kut = 30; kut <= 150; kut+= 30) {DrawRadarAngledLine (kut); } linija (-polovina širine * cos (radijani (30)), 0, pola širine, 0); popMatrix (); } void DrawRadarArcLine (konačni koeficijent plutanja) {luk (0, 0, koeficijent * širina, koeficijent * širina, PI, TWO_PI); } void DrawRadarAngledLine (konačni int kut) {linija (0, 0, (-width/2) * cos (radijani (kut)), (-width/2) * sin (radijani (kut))); } void DrawObject () {pushMatrix (); prevesti (širina/2, 0,926 * visina); strokeWeight (9); moždani udar (255, 10, 10); int pixsDistance = int (iDistance * 0.020835 * height); if (iDistance 40? "Out of Range": "In Range"), 0,125 * širina, 0,9723 * visina); tekst ("Kut:" + iAngle + "°", 0,52 * širina, 0,9723 * visina); tekst ("Udaljenost:", 0,74 * širina, 0,9723 * visina); if (iDistance <40) {text ("" + iDistance + "cm", 0.775 * širina, 0.9723 * visina); } textSize (25); ispuniti (98, 245, 60); prevedi (0.5006 * širina + širina/2 * cos (radijani (30)), 0.9093 * visina - širina/2 * sin (radijani (30))); rotirati (-radijani (-60)); tekst ("30 °", 0, 0); resetMatrix (); prevedi (0,497 * širina + širina/2 * cos (radijani (60)), 0,9112 * visina - širina/2 * sin (radijani (60))); rotirati (-radijani (-30)); tekst ("60 °", 0, 0); resetMatrix (); prevedi (0,493 * širina + širina/2 * cos (radijani (90)), 0,9167 * visina - širina/2 * sin (radijani (90))); rotirati (radijani (0)); tekst ("90 °", 0, 0); resetMatrix (); prevedi (0,487 * širina + širina/2 * cos (radijani (120)), 0,92871 * visina - širina/2 * sin (radijani (120))); rotirati (radijani (-30)); tekst ("120 °", 0, 0); resetMatrix (); prevedi (0,4896 * širina + širina/2 * cos (radijani (150)), 0,9426 * visina - širina/2 * sin (radijani (150))); rotirati (radijani (-60)); tekst ("150 °", 0, 0); popMatrix (); }

int StringToInt (String string) {int vrijednost = 0; for (int i = 0; i = '0' && string.charAt (i) <= '9') {vrijednost *= 10; vrijednost += (string.charAt (i) - '0'); }} povratna vrijednost;}

Preporučeni: