Mündəricat:

Nümunə: 4 addım
Nümunə: 4 addım

Video: Nümunə: 4 addım

Video: Nümunə: 4 addım
Video: Günay İbrahimli — Addım Addım | Audio 2024, Iyul
Anonim

改作:

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

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

Ölçü: 掃描 到 物品 時 加速 傳 傳 述 到 接近 10 sm 時 喇叭 會 警告

Addım 1: Addım 1

Addım 1
Addım 1

這 是 電路圖

Addım 2: Addım 2 (arduino)

Addım 2 ar 程式 (arduino)
Addım 2 ar 程式 (arduino)

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

Addım 3: Addım 3 程式 程式 (işlənir)

idxal emalı.serial.*;

java.awt.event. KeyEvent daxil edin; java.io. IOException idxal edin;

Serial myPort; PFont orcFont; int iAngle; int iDistance; void setup () {size (1000, 500); hamar (); myPort = yeni Serial (bu, "COM7", 9600); myPort.clear (); myPort.bufferUntil ('\ n');

} void draw () {fill (98, 245, 31); noStroke (); doldurun (0, 4); düz (0, 0, en, 0.935 * hündürlük); doldurun (98, 245, 31); DrawRadar (); DrawLine (); DrawObject (); DrawText (); } void serialEvent (Serial myPort) {cəhd edin {String data = myPort.readStringUntil ('\ n'); if (data == null) {qaytar; } int commaIndex = data.indexOf (","); String bucağı = data.substring (0, commaIndex); String məsafəsi = data.substring (commaIndex+1, data.length ()-1); iAngle = StringToInt (bucaq); iDistance = StringToInt (məsafə); } catch (RuntimeException e) {}} DrawRadar () {pushMatrix (); tərcümə (eni/2, 0,926 * hündürlüyü); noFill (); strokeWeight (2); vuruş (98, 245, 31); // DrawRadarArcLine (0.9375) qövs xətləri çəkir; DrawRadarArcLine (0.7300); DrawRadarArcLine (0.5210); DrawRadarArcLine (0.3130); // son int halfWidth = width/2 açı xətlərini çəkir; xətt (-halfWidth, 0, halfWidth, 0); üçün (int açısı = 30; bucaq <= 150; bucaq+= 30) {DrawRadarAngledLine (bucaq); } xətti (-halfWidth * cos (radians (30)), 0, halfWidth, 0); popMatrix (); } boş DrawRadarArcLine (son üzmə əmsalı) {arc (0, 0, əmsal * eni, əmsal * eni, PI, TWO_PI); } boş DrawRadarAngledLine (son int bucağı) {line (0, 0, (-width/2) * cos (radians (bucaq)), (-width/2) * sin (radian (açı))); } boş DrawObject () {pushMatrix (); tərcümə (eni/2, 0,926 * hündürlüyü); strokeWeight (9); vuruş (255, 10, 10); int pixsDistance = int (iDistance * 0.020835 * hündürlük); if (iDistance 40? "Aralıqda": "Aralığında"), 0.125 * eni, 0.9723 * hündürlüyü); mətn ("Açı:" + iAngle + "°", 0,52 * eni, 0,9723 * hündürlüyü); mətn ("Məsafə:", 0.74 * en, 0.9723 * hündürlük); if (iDistance <40) {text ("" + iDistance + "cm", 0.775 * en, 0.9723 * hündürlük); } textSize (25); doldurun (98, 245, 60); tərcümə (0.5006 * eni + eni/2 * cos (radian (30)), 0.9093 * hündürlük - eni/2 * sin (radianlar (30))); döndər (-radianlar (-60)); mətn ("30 °", 0, 0); resetMatrix (); tərcümə (0.497 * eni + eni/2 * cos (radianlar (60)), 0.9112 * hündürlük - eni/2 * sin (radianlar (60))); döndər (-radianlar (-30)); mətn ("60 °", 0, 0); resetMatrix (); tərcümə (0.493 * eni + eni/2 * cos (radianlar (90)), 0.9167 * hündürlük - eni/2 * sin (radianlar (90))); döndür (radianlar (0)); mətn ("90 °", 0, 0); resetMatrix (); tərcümə (0.487 * eni + eni/2 * cos (radianlar (120)), 0.92871 * hündürlük - eni/2 * sin (radianlar (120))); döndür (radianlar (-30)); mətn ("120 °", 0, 0); resetMatrix (); tərcümə (0.4896 * eni + eni/2 * cos (radianlar (150)), 0.9426 * hündürlük - eni/2 * sin (radianlar (150))); döndür (radianlar (-60)); mətn ("150 °", 0, 0); popMatrix (); }

int StringToInt (String string) {int dəyəri = 0; for (int i = 0; i = '0' && string.charAt (i) <= '9') {dəyər *= 10; dəyər += (string.charAt (i) - '0'); }} qaytarma dəyəri;}

Tövsiyə: