Სარჩევი:

ნაბიჯი: 4 ნაბიჯი
ნაბიჯი: 4 ნაბიჯი

ვიდეო: ნაბიჯი: 4 ნაბიჯი

ვიდეო: ნაბიჯი: 4 ნაბიჯი
ვიდეო: ნაბიჯი წინ რევოლუციისკენ 2024, სექტემბერი
Anonim
聲納
聲納

改作:

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

材料: arduino uno, 感測器 感測器, 馬達 馬達, 喇叭

功能: 10 სმ 時 cm 時 時 時 加速 cm cm cm cm cm cm cm

ნაბიჯი 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 () {ზომა (1000, 500); გლუვი (); myPort = ახალი სერიალი (ეს, "COM7", 9600); myPort.clear (); myPort.bufferUntil ('\ n');

} void draw () {შევსება (98, 245, 31); noStroke (); შევსება (0, 4); სწორი (0, 0, სიგანე, 0.935 * სიმაღლე); შევსება (98, 245, 31); DrawRadar (); DrawLine (); DrawObject (); DrawText (); } void serialEvent (სერიული myPort) {ცადე {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 e) {}} 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); for (int კუთხე = 30; კუთხე <= 150; კუთხე+= 30) {DrawRadarAngledLine (კუთხე); } ხაზი (-ნახევარი სიგანე * cos (რადიანი (30)), 0, ნახევარი სიგანე, 0); popMatrix (); } void DrawRadarArcLine (ფლოტის საბოლოო კოეფიციენტი) {რკალი (0, 0, კოეფიციენტი * სიგანე, კოეფიციენტი * სიგანე, PI, TWO_PI); } void DrawRadarAngledLine (საბოლოო int კუთხე) {line (0, 0, (-width/2) * cos (radians (კუთხე)), (-სიგანე/2) * sin (რადიანები (კუთხე))); } void DrawObject () {pushMatrix (); თარგმნა (სიგანე/2, 0.926 * სიმაღლე); ინსულტი წონა (9); ინსულტი (255, 10, 10); int pixsDistance = int (iDistance * 0.020835 * სიმაღლე); თუ (iDistance 40? "ფარგლებს გარეთ": "დიაპაზონში"), 0.125 * სიგანე, 0.9723 * სიმაღლე); ტექსტი ("კუთხე:" + iAngle + "°", 0.52 * სიგანე, 0.9723 * სიმაღლე); ტექსტი ("მანძილი:", 0.74 * სიგანე, 0.9723 * სიმაღლე); if (iDistance <40) {text ("" + iDistance + "cm", 0.775 * სიგანე, 0.9723 * სიმაღლე); } textSize (25); შევსება (98, 245, 60); თარგმნა (0.5006 * სიგანე + სიგანე/2 * კოს (რადიანები (30)), 0.9093 * სიმაღლე - სიგანე/2 * ცოდვა (რადიანები (30))); როტაცია (-რადიანები (-60)); ტექსტი ("30 °", 0, 0); resetMatrix (); თარგმნა (0.497 * სიგანე + სიგანე/2 * კოს (რადიანები (60)), 0.9112 * სიმაღლე - სიგანე/2 * ცოდვა (რადიანები (60))); როტაცია (-რადიანები (-30)); ტექსტი ("60 °", 0, 0); resetMatrix (); თარგმნა (0.493 * სიგანე + სიგანე/2 * კოს (რადიანები (90)), 0.9167 * სიმაღლე - სიგანე/2 * ცოდვა (რადიანები (90))); როტაცია (რადიანები (0)); ტექსტი ("90 °", 0, 0); resetMatrix (); თარგმნა (0.487 * სიგანე + სიგანე/2 * კოს (რადიანები (120)), 0.92871 * სიმაღლე - სიგანე/2 * ცოდვა (რადიანები (120))); როტაცია (რადიანები (-30)); ტექსტი ("120 °", 0, 0); resetMatrix (); თარგმნა (0.4896 * სიგანე + სიგანე/2 * კოს (რადიანი (150)), 0.9426 * სიმაღლე - სიგანე/2 * ცოდვა (რადიანები (150))); როტაცია (რადიანები (-60)); ტექსტი ("150 °", 0, 0); popMatrix (); }

int StringToInt (სიმებიანი სიმებიანი) {int მნიშვნელობა = 0; for (int i = 0; i = '0' && string.charAt (i) <= '9') {მნიშვნელობა *= 10; მნიშვნელობა += (string.charAt (i) - '0'); }} დაბრუნების მნიშვნელობა;}

გირჩევთ: