جدول المحتويات:

聲納: 4 خطوات
聲納: 4 خطوات

فيديو: 聲納: 4 خطوات

فيديو: 聲納: 4 خطوات
فيديو: 【皇子好兇猛-全集】斯文歷史教授穿越到古代當皇子,不小心睡了王妃,這可咋辦? #热门#热血 #男频 #玄幻 #短剧 # #剧集 #小说 #正能量 2024, يوليو
Anonim
聲納
聲納

改作:

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

材料: اردوينو أونو ، 超音波 感測器 ، 驅動 馬達 ، 喇叭

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

الخطوة 1: الخطوة 1 電路圖

الخطوة 1 電路圖
الخطوة 1 電路圖

這 是 電路圖

الخطوة 2: الخطوة 2 寫 程式 (اردوينو)

الخطوة 2 寫 程式 (اردوينو)
الخطوة 2 寫 程式 (اردوينو)

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

الخطوة 3: الخطوة 3 寫 程式 (المعالجة)

معالجة الاستيراد. تسلسلي. * ؛

استيراد java.awt.event. KeyEvent ؛ استيراد java.io. IOException ؛

المسلسل myPort ؛ PFont orcFont ؛ زاوية دولية iDistance Int إعداد باطل () {size (1000، 500)؛ ناعم()؛ myPort = مسلسل جديد (هذا ، "COM7" ، 9600) ؛ myPort.clear () ، myPort.bufferUntil ('\ n') ،

} رسم باطل () {fill (98، 245، 31)؛ noStroke () ، ملء (0 ، 4) ؛ مستقيم (0 ، 0 ، عرض ، 0.935 * ارتفاع) ؛ ملء (98 ، 245 ، 31) ؛ DrawRadar () ، ارسم خطا()؛ DrawObject () ، DrawText () ، } serialEvent (Serial myPort) باطل {try {String data = myPort.readStringUntil ('\ n')؛ إذا (البيانات == فارغة) {عودة ؛ } 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 * ارتفاع) ؛ بدون تعبئة()؛ الوزن (2) ؛ السكتة الدماغية (98 ، 245 ، 31) ؛ // يرسم خطوط القوس DrawRadarArcLine (0.9375) ؛ DrawRadarArcLine (0.7300) ؛ DrawRadarArcLine (0.5210) ؛ DrawRadarArcLine (0.3130) ؛ // يرسم خطوط الزاوية النهائية halfWidth = العرض / 2 ؛ خط (-WithWidth، 0، halfWidth، 0) ؛ من أجل (زاوية int = 30 ؛ زاوية <= 150 ؛ زاوية + = 30) {DrawRadarAngledLine (زاوية) ؛ } line (-halfWidth * cos (راديان (30))، 0، halfWidth، 0)؛ popMatrix () ، } باطل DrawRadarArcLine (معامل التعويم النهائي) {قوس (0 ، 0 ، معامل * عرض ، معامل * عرض ، PI ، TWO_PI) ؛ } باطل DrawRadarAngledLine (زاوية int النهائية) {line (0، 0، (-width / 2) * cos (راديان (زاوية))، (-width / 2) * sin (راديان (زاوية))) ؛ } باطل DrawObject () {pushMatrix () ؛ ترجمة (عرض / 2 ، 0.926 * ارتفاع) ؛ الوزن (9) ؛ السكتة الدماغية (255 ، 10 ، 10) ؛ int pixsDistance = int (iDistance * 0.020835 * height) ؛ إذا (iDistance 40؟ "خارج النطاق": "داخل النطاق") ، 0.125 * عرض ، 0.9723 * ارتفاع) ؛ نص ("Angle:" + iAngle + "°" ، 0.52 * عرض ، 0.9723 * ارتفاع) ؛ نص ("المسافة:" ، 0.74 * عرض ، 0.9723 * ارتفاع) ؛ إذا (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 ؛ لـ (int i = 0؛ i = '0' && string.charAt (i) <= '9') {value * = 10؛ القيمة + = (string.charAt (i) - '0') ؛ }} قيمة الإرجاع؛}

موصى به: