תוכן עניינים:

聲納: 4 שלבים
聲納: 4 שלבים

וִידֵאוֹ: 聲納: 4 שלבים

וִידֵאוֹ: 聲納: 4 שלבים
וִידֵאוֹ: СВИСТОК СМЕРТИ ночью НА КЛАДБИЩЕ / Призрак ребёнка в видео / Aztec Death Whistle 2024, יולי
Anonim
聲納
聲納

改作:

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

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

גודל: 10 ס מ 時 時 時 加速 述 述 到

שלב 1: שלב 1 電路圖

שלב 1 電路圖
שלב 1 電路圖

這 是 電路圖

שלב 2: שלב 2 ar 程式 (ארדואינו)

שלב 2 ar 程式 (ארדואינו)
שלב 2 ar 程式 (ארדואינו)

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

שלב 3: שלב 3 processing 程式 (עיבוד)

ייבוא עיבוד. סדרה.*;

יבוא 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); 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 (data == null) {return; } int commaIndex = data.indexOf (","); זווית מחרוזת = data.substring (0, commaIndex); מרחק מחרוזת = data.substring (commaIndex+1, data.length ()-1); iAngle = StringToInt (זווית); iDistance = StringToInt (מרחק); } catch (RuntimeException e) {}} void DrawRadar () {pushMatrix (); תרגם (רוחב/2, 0.926 * גובה); ללא מילוי(); strokeWeight (2); שבץ (98, 245, 31); // מצייר את קווי הקשת DrawRadarArcLine (0.9375); DrawRadarArcLine (0.7300); DrawRadarArcLine (0.5210); DrawRadarArcLine (0.3130); // מצייר את קווי הזווית הסופיים int halfWidth = width/2; line (-halfWidth, 0, halfWidth, 0); for (int angle = 30; זווית <= 150; זווית+= 30) {DrawRadarAngledLine (זווית); } line (-halfWidth * cos (radians (30)), 0, halfWidth, 0); popMatrix (); } void DrawRadarArcLine (מקדם צף סופי) {arc (0, 0, מקדם * רוחב, מקדם * רוחב, PI, TWO_PI); } void DrawRadarAngledLine (זווית אינט סופית) {שורה (0, 0, (-רוחב/2) * cos (רדיאנים (זווית)), (-רוחב/2) * sin (רדיאנים (זווית))); } void DrawObject () {pushMatrix (); תרגם (רוחב/2, 0.926 * גובה); strokeWeight (9); שבץ (255, 10, 10); int pixsDistance = int (iDistance * 0.020835 * גובה); if (iDistance 40? "מחוץ לטווח": "בטווח"), 0.125 * רוחב, 0.9723 * גובה); text ("זווית:" + 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 * cos (רדיאנים (30)), 0.9093 * גובה - רוחב/2 * sin (רדיאנים (30))); לסובב (-רדיאנים (-60)); טקסט ("30 °", 0, 0); resetMatrix (); תרגם (0.497 * רוחב + רוחב/2 * cos (רדיאנים (60)), 0.9112 * גובה - רוחב/2 * sin (רדיאנים (60))); לסובב (-רדיאנים (-30)); טקסט ("60 °", 0, 0); resetMatrix (); תרגם (0.493 * רוחב + רוחב/2 * cos (רדיאנים (90)), 0.9167 * גובה - רוחב/2 * sin (רדיאנים (90))); לסובב (רדיאנים (0)); טקסט ("90 °", 0, 0); resetMatrix (); תרגם (0.487 * רוחב + רוחב/2 * cos (רדיאנים (120)), 0.92871 * גובה - רוחב/2 * sin (רדיאנים (120))); לסובב (רדיאנים (-30)); טקסט ("120 °", 0, 0); resetMatrix (); תרגם (0.4896 * רוחב + רוחב/2 * cos (רדיאנים (150)), 0.9426 * גובה - רוחב/2 * sin (רדיאנים (150))); לסובב (רדיאנים (-60)); טקסט ("150 °", 0, 0); popMatrix (); }

int StringToInt (מחרוזת מחרוזת) {int value = 0; for (int i = 0; i = '0' && string.charAt (i) <= '9') {ערך *= 10; value += (string.charAt (i) - '0'); }} ערך החזרה;}

מוּמלָץ: