Բովանդակություն:

聲納: 4 քայլ
聲納: 4 քայլ
Anonim
聲納
聲納

改作:

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

Անուններ ՝ arduino uno, 超音波 感測器, 驅動 馬達, 喇叭

功能: 10 時 cm cm 加速

Քայլ 1: Քայլ 1

Քայլ 1
Քայլ 1

是 電路圖

Քայլ 2: Քայլ 2 ar 程式 (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 () {չափը (1000, 500); հարթ(); myPort = նոր Սերիա (սա, «COM7», 9600); myPort.clear (); myPort.bufferUntil ('\ n');

} դատարկ վիճակահանություն () {լրացնել (98, 245, 31); noStroke (); լրացնել (0, 4); ուղիղ (0, 0, լայնություն, 0.935 * բարձրություն); լրացնել (98, 245, 31); DrawRadar (); DrawLine (); DrawObject (); DrawText (); } void serialEvent (Serial myPort) {try {String data = myPort.readStringUntil ('\ n'); if (տվյալները == null) {վերադարձ; } int commaIndex = data.indexOf (","); Լարի անկյուն = data.substring (0, commaIndex); Լարի հեռավորություն = data.substring (ստորակետ +1, data.length ()-1); iAngle = StringToInt (անկյուն); iDistance = StringToInt (հեռավորություն); } catch (RuntimeException ե) {}} void 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; տող (-կիսակ լայնություն, 0, կես լայնություն, 0); համար (int անկյուն = 30; անկյուն <= 150; անկյուն+= 30) {DrawRadarAngledLine (անկյուն); } տող (-հիս կես Լայնություն * cos (ռադիաններ (30)), 0, կես Լայնություն, 0); popMatrix (); } void DrawRadarArcLine (վերջնական բոց գործակից) {arc (0, 0, գործակից * լայնություն, գործակից * լայնություն, PI, TWO_PI); } void DrawRadarAngledLine (վերջնական int անկյուն) {տող (0, 0, (-այնություն/2) * cos (ռադիաններ (անկյուն)), (-այնություն/2) * մեղք (ռադիաններ (անկյուն))); } void DrawObject () {pushMatrix (); թարգմանել (լայնություն/2, 0.926 * բարձրություն); հարված Քաշ (9); կաթված (255, 10, 10); int pixsDistance = int (iDistance * 0.020835 * բարձրություն); եթե (iDistance 40? "Out of Range": "In Range"), 0.125 * լայնություն, 0.9723 * բարձրություն); տեքստ ("Անկյուն." + iAngle + "°", 0.52 * լայնություն, 0.9723 * բարձրություն); տեքստ («Հեռավորություն», 0.74 * լայնություն, 0.9723 * բարձրություն); եթե (iDistance <40) {տեքստ ("" + iDistance + "սմ", 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 (Լարային տող) {int արժեք = 0; համար (int i = 0; i = '0' && string.charAt (i) <= '9') {արժեքը *= 10; արժեքը += (string.charAt (i) - '0'); }} վերադարձելի արժեքը;}

Խորհուրդ ենք տալիս: