สารบัญ:

聲納: 4 ขั้นตอน
聲納: 4 ขั้นตอน

วีดีโอ: 聲納: 4 ขั้นตอน

วีดีโอ: 聲納: 4 ขั้นตอน
วีดีโอ: 邪魅娜诺直击人性黑暗!一口气看完大尺度泰剧《禁忌女孩》第2季合集让你欲罢“不能”!剧集解说 2024, พฤศจิกายน
Anonim

改作:https://aboutsciences.com/blog/arduino-radar-using…

我在原本聲納的基礎下加裝了喇叭以達到警告的作用. ของฉัน本聲納的基礎下加裝了喇叭以達到警告的作用

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

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

ขั้นตอนที่ 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; การตั้งค่าเป็นโมฆะ () { ขนาด (1000, 500); เรียบ(); myPort = ซีเรียลใหม่ (นี่ "COM7", 9600); myPort.clear(); myPort.bufferUntil('\n');

} เสมอเป็นโมฆะ () { เติม (98, 245, 31); ไม่มีจังหวะ (); เติม(0, 4); ตรง(0, 0, กว้าง, 0.935 * สูง); กรอก (98, 245, 31); DrawRadar(); DrawLine(); DrawObject(); DrawText(); } ถือเป็นโมฆะ serialEvent (Serial myPort) { ลอง { ข้อมูลสตริง = myPort.readStringUntil ('\ n'); ถ้า (ข้อมูล == null) { กลับ; } int commaIndex = data.indexOf(", "); มุมสตริง = data.substring(0, commaIndex); ระยะสตริง = data.substring(commaIndex+1, data.length()-1); iAngle = StringToInt (มุม); iDistance = StringToInt (ระยะทาง); } จับ (RuntimeException จ) {} } เป็นโมฆะ DrawRadar () { pushMatrix (); แปล(กว้าง/2, 0.926 * สูง); ไม่เติม(); จังหวะน้ำหนัก(2); จังหวะ (98, 245, 31); // วาดเส้นโค้ง DrawRadarArcLine(0.9375); DrawRadarArcLine(0.7300); DrawRadarArcLine(0.5210); DrawRadarArcLine(0.3130); // วาดเส้นมุมสุดท้าย int halfWidth = width/2; บรรทัด (-halfWidth, 0, halfWidth, 0); สำหรับ (มุม int = 30; มุม <= 150; มุม + = 30) { DrawRadarAngledLine (มุม); } line(-halfWidth * cos(เรเดียน(30)), 0, halfWidth, 0); popMatrix(); } เป็นโมฆะ DrawRadarArcLine (สัมประสิทธิ์การลอยตัวสุดท้าย) { arc (0, 0, สัมประสิทธิ์ * ความกว้าง, สัมประสิทธิ์ * ความกว้าง, PI, TWO_PI); } เป็นโมฆะ DrawRadarAngledLine (มุม int สุดท้าย){ เส้น (0, 0, (-ความกว้าง/2) * cos (เรเดียน (มุม)), (-ความกว้าง/2) * บาป (เรเดียน (มุม))); } เป็นโมฆะ DrawObject() { pushMatrix(); แปล(กว้าง/2, 0.926 * สูง); strokeWeight(9); จังหวะ (255, 10, 10); int pixsDistance = int (iDistance * 0.020835 * สูง); if(iDistance 40 ? "Out of Range": "In Range"), 0.125 * กว้าง 0.9723 * สูง); ข้อความ("มุม: " + iAngle + " °", 0.52 * กว้าง, 0.9723 * สูง); text("ระยะทาง: ", 0.74 * กว้าง, 0.9723 * สูง); if(iDistance <40) { text(" " + iDistance +" cm", 0.775 * กว้าง, 0.9723 * สูง); } ขนาดข้อความ(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 (สตริงสตริง) { ค่า int = 0; สำหรับ (int i = 0; i = '0' && string.charAt (i) <= '9') { ค่า *= 10; ค่า += (string.charAt(i) - '0'); }} คืนค่า;}

แนะนำ: