Obsah:

Čas: 4 kroky
Čas: 4 kroky

Video: Čas: 4 kroky

Video: Čas: 4 kroky
Video: Radomír Němeček, 4 kroky ke svobodě 2024, Júl
Anonim
聲納
聲納

改作:

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

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

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

Krok 1: Krok 1 電路圖

Krok 1 電路圖
Krok 1 電路圖

這 是 電路圖

Krok 2: Krok 2 寫 程式 (arduino)

Krok 2 寫 程式 (arduino)
Krok 2 寫 程式 (arduino)

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

Krok 3: Krok 3 寫 程式 (spracovanie)

spracovanie importu.sériové.*;

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

Sériový myPort; PFont orcFont; int iAngle; int iDistance; void setup () {veľkosť (1000, 500); hladký (); myPort = nový sériový port (tento, „COM7“, 9600); myPort.clear (); myPort.bufferUntil ('\ n');

} void draw () {fill (98, 245, 31); noStroke (); výplň (0, 4); priamy (0, 0, šírka, 0,935 * výška); výplň (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 (","); Uhol reťazca = data.substring (0, commaIndex); Vzdialenosť reťazcov = data.substring (commaIndex+1, data.length ()-1); iAngle = StringToInt (uhol); iDistance = StringToInt (vzdialenosť); } catch (RuntimeException e) {}} neplatné DrawRadar () {pushMatrix (); preložiť (šírka/2, 0,926 * výška); noFill (); zdvihová hmotnosť (2); zdvih (98, 245, 31); // nakreslí oblúkové čiary DrawRadarArcLine (0,9375); DrawRadarArcLine (0,7300); DrawRadarArcLine (0,5210); DrawRadarArcLine (0,3130); // nakreslí uhlové čiary final int halfWidth = width/2; riadok (-polovičná šírka, 0, polovičná šírka, 0); pre (vnútorný uhol = 30; uhol <= 150; uhol+= 30) {DrawRadarAngledLine (uhol); } riadok (-polovičná šírka * cos (radiány (30)), 0, polovičná šírka, 0); popMatrix (); } neplatné DrawRadarArcLine (konečný float koeficient) {arc (0, 0, koeficient * šírka, koeficient * šírka, PI, TWO_PI); } neplatné DrawRadarAngledLine (konečný vnútorný uhol) {riadok (0, 0, (-šírka/2) * cos (radiány (uhol)), (-šířka/2) * sin (radiány (uhol))); } neplatné DrawObject () {pushMatrix (); preložiť (šírka/2, 0,926 * výška); zdvihová hmotnosť (9); zdvih (255, 10, 10); int pixsDistance = int (iDistance * 0,020835 * výška); if (iDistance 40? "Out of Range": "In Range"), 0,125 * šírka, 0,9723 * výška); text ("Uhol:" + iAngle + "°", 0,52 * šírka, 0,9723 * výška); text ("Vzdialenosť:", 0,74 * šírka, 0,9723 * výška); if (iDistance <40) {text ("" + iDistance + "cm", 0,775 * šírka, 0,9723 * výška); } textSize (25); výplň (98, 245, 60); translate (0,5006 * šírka + šírka/2 * cos (radiány (30)), 0,9093 * výška - šírka/2 * sin (radiány (30))); striedať (-radiány (-60)); text ("30 °", 0, 0); resetMatrix (); translate (0,497 * šírka + šírka/2 * cos (radiány (60)), 0,9112 * výška - šírka/2 * sin (radiány (60))); striedať (-radiány (-30)); text ("60 °", 0, 0); resetMatrix (); translate (0,493 * šírka + šírka/2 * cos (radiány (90)), 0,9167 * výška - šírka/2 * sin (radiány (90))); rotácia (radiány (0)); text ("90 °", 0, 0); resetMatrix (); translate (0,487 * šírka + šírka/2 * cos (radiány (120)), 0,92871 * výška - šírka/2 * sin (radiány (120))); rotácia (radiány (-30)); text ("120 °", 0, 0); resetMatrix (); translate (0,4896 * šírka + šírka/2 * cos (radiány (150)), 0,9426 * výška - šírka/2 * sin (radiány (150))); rotácia (radiány (-60)); text ("150 °", 0, 0); popMatrix (); }

int StringToInt (reťazec reťazca) {int hodnota = 0; pre (int i = 0; i = '0' && string.charAt (i) <= '9') {hodnota *= 10; hodnota += (string.charAt (i) - '0'); }} návratová hodnota;}

Odporúča: