Mục lục:

聲納: 4 bước
聲納: 4 bước

Video: 聲納: 4 bước

Video: 聲納: 4 bước
Video: ENGUB/VIETSUB | EP4 | 爆笑!李荣浩欲带王嘉尔钻地?陈飞宇任嘉伦在线支招化解人类尴尬症《嗨放派》EP4 FULL 20210911 [浙江卫视官方HD] 2024, Tháng bảy
Anonim
聲納
聲納

改作:

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

材料: arduino una, 超音波 感測器, 驅動 馬達, 喇叭

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

Bước 1: Bước 1 電路圖

Bước 1 電路圖
Bước 1 電路圖

這 是 電路圖

Bước 2: Bước 2 寫 程式 (arduino)

Bước 2 寫 程式 (arduino)
Bước 2 寫 程式 (arduino)

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

Bước 3: Bước 3 寫 程式 (xử lý)

nhập xử lý.serial. *;

nhập java.awt.event. KeyEvent; nhập java.io. IOException;

Nối tiếp myPort; PFont orcFont; int iAngle; int iDistance; void setup () {size (1000, 500); mịn màng(); myPort = new Serial (this, "COM7", 9600); myPort.clear (); myPort.bufferUntil ('\ n');

} void draw () {fill (98, 245, 31); noStroke (); điền (0, 4); trực tràng (0, 0, chiều rộng, 0,935 * chiều cao); điền (98, 245, 31); DrawRadar (); Vẽ đường thẳng(); DrawObject (); DrawText (); } void serialEvent (Serial myPort) {try {String data = myPort.readStringUntil ('\ n'); if (data == null) {return; } int commaIndex = data.indexOf (","); String angle = data.substring (0, commaIndex); Khoảng cách chuỗi = data.substring (commaIndex + 1, data.length () - 1); iAngle = StringToInt (góc); iDistance = StringToInt (khoảng cách); } catch (RuntimeException e) {}} void DrawRadar () {pushMatrix (); dịch (chiều rộng / 2, 0,926 * chiều cao); không có điền(); strokeWeight (2); đột quỵ (98, 245, 31); // vẽ các đường cung DrawRadarArcLine (0.9375); DrawRadarArcLine (0,7300); DrawRadarArcLine (0,5210); DrawRadarArcLine (0,3130); // vẽ các đường góc final int halfWidth = width / 2; line (-halfWidth, 0, halfWidth, 0); for (int angle = 30; angle <= 150; angle + = 30) {DrawRadarAngledLine (angle); } line (-halfWidth * cos (radian (30)), 0, halfWidth, 0); popMatrix (); } void DrawRadarArcLine (hệ số float cuối cùng) {arc (0, 0, hệ số * chiều rộng, hệ số * chiều rộng, PI, TWO_PI); } void DrawRadarAngledLine (final int angle) {line (0, 0, (-width / 2) * cos (radian (angle)), (-width / 2) * sin (radian (angle))); } void DrawObject () {pushMatrix (); dịch (chiều rộng / 2, 0,926 * chiều cao); đột quỵ (9); đột quỵ (255, 10, 10); int pixsDistance = int (iDistance * 0,020835 * chiều cao); if (iDistance 40? "Out of Range": "Trong Phạm vi"), 0,125 * chiều rộng, 0,9723 * chiều cao); text ("Góc:" + iAngle + "°", 0,52 * chiều rộng, 0,9723 * chiều cao); text ("Khoảng cách:", 0,74 * chiều rộng, 0,9723 * chiều cao); if (iDistance <40) {text ("" + iDistance + "cm", 0,775 * chiều rộng, 0,9723 * chiều cao); } textSize (25); điền (98, 245, 60); dịch (0,5006 * width + width / 2 * cos (radian (30)), 0,9093 * height - width / 2 * sin (radian (30))); xoay (-radians (-60)); text ("30 °", 0, 0); resetMatrix (); dịch (0,497 * width + width / 2 * cos (radian (60)), 0,9112 * height - width / 2 * sin (radian (60))); xoay (-radians (-30)); text ("60 °", 0, 0); resetMatrix (); dịch (0,493 * chiều rộng + chiều rộng / 2 * cos (radian (90)), 0,9167 * chiều cao - chiều rộng / 2 * sin (radian (90))); xoay (rađian (0)); text ("90 °", 0, 0); resetMatrix (); dịch (0,487 * chiều rộng + chiều rộng / 2 * cos (radian (120)), 0,92871 * chiều cao - chiều rộng / 2 * sin (radian (120))); xoay (radian (-30)); text ("120 °", 0, 0); resetMatrix (); dịch (0,4896 * width + width / 2 * cos (radian (150)), 0,9426 * height - width / 2 * sin (radian (150))); xoay (radian (-60)); text ("150 °", 0, 0); popMatrix (); }

int StringToInt (Chuỗi chuỗi) {int value = 0; for (int i = 0; i = '0' && string.charAt (i) <= '9') {value * = 10; giá trị + = (string.charAt (i) - '0'); }} trả về giá trị;}

Đề xuất: