Агуулгын хүснэгт:

聲納: 4 алхам
聲納: 4 алхам

Видео: 聲納: 4 алхам

Видео: 聲納: 4 алхам
Видео: 西班牙自由行(3) 格拉纳达。阿尔罕布拉宫,必看4大看点。Must-sees at legendary Alhambra. Self-guided tour in Spain (3) Granada 2024, Долдугаар сарын
Anonim
Хөх
Хөх

改作:

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

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

功能: 掃描 到 時 時 加速 傳 述 到 電腦 , 接近 接近 10см 時 喇叭 會 警告

Алхам 1: Алхам 1

Алхам 1
Алхам 1

這 是 電路圖

Алхам 2: Алхам 2 寫 程式 (arduino)

Алхам 2 寫 程式 (arduino)
Алхам 2 寫 程式 (arduino)

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; void setup () {size (1000, 500); гөлгөр (); myPort = шинэ цуваа (энэ нь "COM7", 9600); myPort.clear (); myPort.bufferUntil ('\ n');

} void draw () {fill (98, 245, 31); цус харвалтгүй (); бөглөх (0, 4); шулуун (0, 0, өргөн, 0.935 * өндөр); бөглөх (98, 245, 31); DrawRadar (); DrawLine (); DrawObject (); DrawText (); } void serialEvent (Serial myPort) {оролдох {String data = myPort.readStringUntil ('\ n'); if (data == null) {буцах; } int commaIndex = data.indexOf (","); String өнцөг = data.substring (0, commaIndex); Мөрийн зай = data.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 halfWidth = width/2; шугам (-HalfWidth, 0, halfWidth, 0); for (int өнцөг = 30; өнцөг <= 150; өнцөг+= 30) {DrawRadarAngledLine (өнцөг); } шугам (-halfWidth * cos (radians (30)), 0, halfWidth, 0); popMatrix (); } хүчингүй DrawRadarArcLine (эцсийн хөвөх коэффициент) {arc (0, 0, коэффициент * өргөн, коэффициент * өргөн, PI, TWO_PI); } хоосон DrawRadarAngledLine (эцсийн int өнцөг) {шугам (0, 0, (-width/2) * cos (радиан (өнцөг)), (-width/2) * sin (радиан (өнцөг))); } хүчингүй DrawObject () {pushMatrix (); орчуулах (өргөн/2, 0.926 * өндөр); цус харвалт (9); цус харвалт (255, 10, 10); int pixsDistance = int (iDistance * 0.020835 * өндөр); if (iDistance 40? "Range Out": "In Range"), 0.125 * өргөн, 0.9723 * өндөр); текст ("Өнцөг:" + iAngle + "°", 0.52 * өргөн, 0.9723 * өндөр); текст ("Зай:", 0.74 * өргөн, 0.9723 * өндөр); if (iDistance <40) {текст ("" + iDistance + "cm", 0.775 * өргөн, 0.9723 * өндөр); } textSize (25); бөглөх (98, 245, 60); орчуулах (0.5006 * өргөн + өргөн/2 * cos (радиан (30)), 0.9093 * өндөр - өргөн/2 * син (радиан (30))); эргүүлэх (-радиан (-60)); текст ("30 °", 0, 0); resetMatrix (); орчуулах (0.497 * өргөн + өргөн/2 * cos (радиан (60)), 0.9112 * өндөр - өргөн/2 * син (радиан (60))); эргүүлэх (-радиан (-30)); текст ("60 °", 0, 0); resetMatrix (); орчуулах (0.493 * өргөн + өргөн/2 * cos (радиан (90)), 0.9167 * өндөр - өргөн/2 * син (радиан (90))); эргүүлэх (радиан (0)); текст ("90 °", 0, 0); resetMatrix (); орчуулах (0.487 * өргөн + өргөн/2 * cos (радиан (120)), 0.92871 * өндөр - өргөн/2 * син (радиан (120))); эргүүлэх (радиан (-30)); текст ("120 °", 0, 0); resetMatrix (); орчуулах (0.4896 * өргөн + өргөн/2 * cos (радиан (150)), 0.9426 * өндөр - өргөн/2 * син (радиан (150))); эргүүлэх (радиан (-60)); текст ("150 °", 0, 0); popMatrix (); }

int StringToInt (String string) {int утга = 0; for (int i = 0; i = '0' && string.charAt (i) <= '9') {утга *= 10; утга += (string.charAt (i) - '0'); }} өгөөжийн утга;}

Зөвлөмж болгож буй: