فهرست مطالب:

کنترل کننده بازی آردوینو با چراغ هایی که به بازی Unity شما پاسخ می دهند :: 24 مرحله
کنترل کننده بازی آردوینو با چراغ هایی که به بازی Unity شما پاسخ می دهند :: 24 مرحله

تصویری: کنترل کننده بازی آردوینو با چراغ هایی که به بازی Unity شما پاسخ می دهند :: 24 مرحله

تصویری: کنترل کننده بازی آردوینو با چراغ هایی که به بازی Unity شما پاسخ می دهند :: 24 مرحله
تصویری: 50 مبتکرانه ترین حمل و نقل شخصی 2021 - 2022 2024, جولای
Anonim
کنترل کننده بازی آردوینو با چراغ هایی که به بازی Unity شما پاسخ می دهند
کنترل کننده بازی آردوینو با چراغ هایی که به بازی Unity شما پاسخ می دهند

ابتدا این مورد را در word نوشتم. این اولین بار است که از دستورالعمل آموزشی استفاده می کنم ، بنابراین هر زمان که می گویم: کد را بنویسید تا بدانید که من به تصویر بالای آن مرحله اشاره می کنم.

در این پروژه من از 2 آردوینو برای اجرای 2 بیت مجزا از کد استفاده می کنم ، زیرا در کار با آن فقط با یکی مشکل داشتم

اینها Uno و Leonardo هستند

در مجموع این چیزی است که شما به آن نیاز دارید تا این پروژه را باندرد کنید.

· 7 دکمه فشاری

· 23 سیم جامپر

· 1 arduino Leonardo + کابل usb

· 4 مقاومت · 4 led’s

· 1 arduino uno + کابل USB

· 2 تخته نان

مرحله 1: اتصال دکمه های کنترل به آردوینو

اتصال دکمه های کنترل به آردوینو
اتصال دکمه های کنترل به آردوینو

آنچه برای اتصال این بخش به آن نیاز دارید:

· 7 دکمه فشاری

· 14 سیم بلوز

· 1 arduino Leonardo + کابل usb

· تخته نان

اتصال دکمه ها بسیار ساده است اما می تواند به سرعت برای نمایش در شکل تصویر به هم ریخته شود.

· ابتدا دکمه های فشار را در موقعیت هایی که در تصویر بالا مشخص کرده ام قرار دهید.

· در مرحله دوم شما می خواهید یک جهنده از شکاف زمینی روی آردوینو لئوناردو را به ردیف منفی تخته نان وصل کنید.

· حالا شما از هر نقطه ای که در ردیف منفی قرار دارد ، پرش کننده ها را به ردیفی که با پین سمت راست دکمه فشار می دهد متصل می کنید. این قدرت را به آن تغذیه می کند

· سپس می خواهید یک سیم جامپر را از ردیفی که با پین سمت چپ دکمه فشاری شما مطابقت دارد به شکاف های ورودی دیجیتال لئوناردو وصل کنید. برای دکمه های اینجا من از شکاف 2 - 3 - 4 - 5 - 6 - 7- 8 استفاده کردم

من فقط سیم ورودی 8 را روی تصویر نشان دادم ، زیرا یک تصویر بسیار کثیف می شود که همه سیم ها را از یکدیگر عبور می دهد.

مرحله 2: کدگذاری Arduino Leonardo:

برنامه نویسی Arduino Leonardo
برنامه نویسی Arduino Leonardo

بنابراین دلیل اینکه من از لئوناردو برای این کار استفاده می کنم را به شما بگویم. به این دلیل که دارای تراشه خاصی است که Uno ندارد و باعث می شود کامپیوتر آن را به عنوان یک دستگاه ورودی usb تشخیص دهد. بسیار شبیه به صفحه کلید. این به ما امکان می دهد کاری را انجام دهیم که زندگی ما را به عنوان برنامه نویس این پروژه بسیار آسان تر می کند. شبیه سازی صفحه کلید ما قصد داریم کامپیوتر را فریب دهیم که فکر می کنیم وقتی در واقع دکمه های کنترل خود را فشار می دهیم ، کلیدهای خاصی را روی صفحه کلید فشار می دهیم.

حالا من قدم به قدم فکر می کنم راه می روم.

ابتدا از بالا به بالا Keyboard.h را وارد می کنیم. این به ما امکان می دهد از توابع صفحه کلیدی که قرار است در کد خود استفاده کنیم استفاده کنیم.

مرحله 3:

تصویر
تصویر

سپس باید شکاف های ورودی دیجیتال را که قرار است در آن استفاده کنیم ، تعریف کنیم

لئوناردو برای هر دکمه

من همچنین نام هر کدام را بر اساس کلیدی که می خواهم از آن تقلید کنم ، نامگذاری کرده ام.

مرحله 4:

تصویر
تصویر

از آنجا وارد تابع راه اندازی می شویم. این به

arduino هنگام راه اندازی چه می کند

ابتدا Serial.begin را می نویسیم که پورت سریال را باز می کند و سرعت داده را روی 9600 bps تنظیم می کند

و ما همه پین های نامگذاری شده را ورودی تعریف می کنیم.

مرحله 5:

تصویر
تصویر

و در نهایت ما تابع حلقه خود را می نویسیم که بررسی می کند آیا

دکمه ها فشرده می شوند و به arduino می گویند که چگونه به آن پاسخ دهد.

ابتدا Keyboard.begin را می نویسیم که به arduino می گوید که باید با استفاده از عملکردهای صفحه کلید مراقب ما باشد

مرحله 6:

تصویر
تصویر
تصویر
تصویر
تصویر
تصویر

سپس برای هر دکمه یک دستور if/else می نویسیم که به این شکل است

بنابراین چیزی که در اینجا به arduino گفتم این است: اگر دکمه سمت چپ من روی کنترلر فشار می یابد ، کامپیوتر را مجبور کنید فکر کنید که ما کلید "a" را فشار می دهیم و اگر اینطور نیست ، تصور کنید که ما کلید را رها کرده ایم.

شما اساساً این بلوک کد را برای هر دکمه روی کنترلر خود تکرار می کنید. با تغییرات برای هر متغیر و کلیدهایی که متغیر باید شبیه سازی شود

مرحله 7:

تصویر
تصویر

کلیدهایی که ما به رایانه گفتیم اینجا را فشار دهید W - A - S - D هستند که کلید آن است

تقریباً برای حرکت در بازی های رایانه ای و E-Q استاندارد هستند و فاصله ای که در این کد به عنوان "" دکمه هایی هستند که من برای برداشتن آنها استفاده می کنم-حذف و آتش زدن در بازی من شناخته می شوند. با خیال راحت اینها را به هر کلیدی که احساس می کنید برای بازی/کنترل کننده شما بهتر کار می کند ، تغییر دهید.

سپس در نهایت به arduino می گوییم که بررسی Keyboard.end را متوقف کند

مرحله 8: کدگذاری جنبش در وحدت:

جنبش کدگذاری در وحدت
جنبش کدگذاری در وحدت

ابتدا اجازه دهید به شما بگویم که من این را برای یک بازی دو بعدی می سازم

نمونه هایی که خواهید دید برای این منظور ساخته شده است. اگر شما در حالت سه بعدی کار می کنید ، عمدتا در جایی که من از vector2 استفاده می کنم ، از vector3 استفاده می کنید. زیرا شما باید نگران ابعاد اضافی حرکت در حالت سه بعدی باشید.

در حال حاضر دلیل استفاده از شبیه سازی صفحه کلید در قسمت آردوینو این است که Unity چیزی برای تشخیص کلیدهای صفحه کلید دارد که می توانیم از آن استفاده کنیم.

اگر پروژه خود را با وحدت باز کردید به Edit -> Project settings -> Input بروید. می توانید در بازرس خود مشاهده کنید که مدیر ورودی را فعال می کند. جایی که اگر روی Axes کلیک کنید ، می توانید مجموعه ای از نامهای ورودی را باز کنید که معمولاً برای کنترل کننده های رایانه مانند مواردی که ما در حال ساختیم استفاده می شود. دو ورودی که قصد استفاده از آنها را داریم افقی و عمودی هستند که اگر حدس زده اید W-A-S-D را بررسی کنید.

ابتدا می خواهید یک شیء در سلسله مراتب صحنه های وحدت خود بسازید که پخش کننده شما خواهد بود. در مورد من این پسر کوچک سرگرم کننده است. این می تواند هر آنچه شما نیاز دارید باشد ، اما من به منظور بازی من این شخص را ساختم.

مرحله 9:

تصویر
تصویر

شما می خواهید به این بازیکن 2 چیز بدهید. یک برخورد کننده جعبه 2 بعدی و

a Rigidbody 2d و آنها را ویرایش کنید تا مانند تصویر بالا باشد.

مرحله 10:

تصویر
تصویر

سپس می خواهید به پوشه پروژه های خود بروید و یک فایل ایجاد کنید

اسکریپت سی شارپ که من نام PlayerMovement را گذاشتم.

در این اسکریپت شما قصد دارید 2 متغیر را تعریف کنید. یک شناور عمومی که من آن را moveSpeed می نامم. که سرعت حرکت شما را تعیین می کند. و یک Rigidbody2D خصوصی که من آن را RigidPlayer می نامم. که به دنبال بازیکنان سختگیر شما خواهد بود.

فراموش نکنید که به ویرایشگر وحدت خود بروید و روی پخش کننده خود کلیک کنید و این اسکریپت جدید را با کشیدن آن به بازرس اضافه کنید و یک مقدار برای moveSpeed تعیین کنید.

مرحله 11:

تصویر
تصویر

اکنون در Start () خود می خواهید یک کار را انجام دهید و آن این است

مطمئن شوید RigidPlayer شما می تواند پرداخت کننده شما را به صورت دو بعدی پیدا کند. این کار را با خط کد زیر انجام می دهید:

مرحله 12:

تصویر
تصویر

سپس به سراغ بروزرسانی () می رویم. اینجا جایی است که داریم می رویم

برای حرکت بازیکن

ما این کار را با یک عبارت بسیار ساده if انجام می دهیم که به کلیدهای منفی و مثبت افقی (AD) و عمودی (SW) نگاه می کند و آن را به عنوان یک عدد اعمال می کنیم تا بدن سخت خود را 2 بعدی قرار دهیم تا بازیکن خود را به داخل فشار دهد. یک جهت این عدد در متغیر moveSpeed ضرب می شود.

مرحله 13:

تصویر
تصویر

در نهایت شما می خواهید مطمئن شوید که پخش کننده شما وقتی متوقف می شود

شما چیزی را فشار نمی دهید این کار را دوست دارید:

حالا اگر می خواهید از 3 دکمه دیگر خود برای هر کاری که با این دستور if انجام می دهید استفاده کنید: if (Input. GetKeyDown (Keycode. Space))

برای فاصله و حرف دیگر کلیدهایی را که انتخاب کرده اید برای کلیدهای دیگر قرار دهید.

مرحله 14: اتصال چراغ ها به آردوینو

اتصال چراغ ها به آردوینو
اتصال چراغ ها به آردوینو

·

آنچه برای اتصال این بخش به آن نیاز دارید:

· 9 سیم جامپر

· 4 مقاومت

· 4 عدد led

· 1 کابل arduino uno + usb

· تخته نان

اتصال چراغ ها از طریق Uno انجام می شود.

در نهایت مانند تصویر بالا به نظر می رسد:

شما مقاومت ها را به سمت بلند LED ها وصل می کنید. سپس یک بلوز را از شماره پین دیجیتال روی uno به مقاومت وصل می کنید. در این مورد من از اسلات پین دیجیتال 9 -10 -11 -12 استفاده کردم ، وقتی به کد چراغ ها می رسیم ، این اعداد مرتبط خواهند بود.

از آنجا می خواهید یک جهنده را از شکاف زمینی آردوینو Uno خود به نقطه روی تخته خود وصل کنید ، همانطور که با سیم سیاه روی تصویر بالا دیده می شود.

سپس می خواهید 4 پرش به سر کوتاه در انتهای کوتاه هر LED داشته باشید

مرحله 15: برنامه نویسی Arduino Uno

برنامه نویسی Arduino Uno
برنامه نویسی Arduino Uno

بسیار خوب ، ابتدا می خواهیم متغیرهای خود را دوباره تعریف کنیم

بنابراین ابتدا از کدام ورودی های دیجیتال برای چراغ های خود استفاده می کنیم. و ما قصد داریم یک کاراکتر به نام myCol [20] بسازیم

مرحله 16:

تصویر
تصویر

سپس در تنظیمات می خواهیم Serial.begin را دوباره انجام دهیم. همه LED های ما را روی خروجی بگذارید و همه آنها را هنگام راه اندازی خاموش کنید.

مرحله 17:

تصویر
تصویر

و در نهایت شما می خواهید تابع حلقه خود را بنویسید.

این امر باعث می شود تا زمانی که یکی از دو رویداد اتفاق می افتد ، آردوینو در هر داده ای که از طریق سریال وارد می شود بخواند. یا یک شخصیت تغذیه خط شناسایی می شود. این با lf مشخص می شود که روی 10 تنظیم شده است و اولین آرگومان است یا مقدار مشخصی از بایت در آن خوانده شده است. این سومین آرگومان است و برای این مثال فقط یک بایت تنظیم شده است. داده ها در متغیر myCol ذخیره می شوند که روی char و محدوده 20 تنظیم شده است. در readBytesUntil این دومین آرگومان است. یا راه دیگری برای توضیح آن Serial.readBytesUntil (terminatorCharacter ، buffer ، byteLimit) است ؛

و عبارات if از روشن شدن برخی چراغها هنگام وحدت سیگنال اطمینان حاصل می کند. در این حالت من 4 چراغ رنگ مختلف دریافت کردم ، بنابراین یکپارچه سازی g را برای روشن شدن LED سبز ، b برای روشن شدن LED آبی ، r برای روشن شدن LED قرمز و y برای روشن شدن LED زرد ، ارسال می کنم.

مرحله 18: کدگذاری چراغهای وحدت سمت:

چراغهای کدگذاری سمت وحدت
چراغهای کدگذاری سمت وحدت

قبل از اینکه به این موضوع بپردازیم ، ابتدا اوکی 2 چیز را در نظر بگیرید.

1. در برنامه کدنویسی آردوینو به Tool -> Port -> بروید و بررسی کنید که کد COM uno شما در کدام است. در مورد من COM3 آن (این در کد مهم خواهد بود)

2. در وحدت به ویرایش -> تنظیمات پروژه -> پخش کننده و سپس در بازرس بر روی سایر تنظیمات کلیک کنید و به سطح سازگاری Api بروید و آن را از زیرشبکه. NET 2.0 به. NET 2.0 تغییر دهید.

اوکی تمام شد وارد آن شویم.

روی سلسله مراتب خود راست کلیک کرده و روی Create empty کلیک کنید.

این یک شیء بازی خالی است که فقط در بازی شما وجود دارد تا یک اسکریپت برای ما نگه دارد. من این شیء را Init نامیده ام.

مرحله 19:

تصویر
تصویر

سپس به برگه پروژه های خود بروید و یک اسکریپت C# جدید ایجاد کنید

و آن را ارسال می نامند.

اولین کاری که انجام می دهید این است که این خطوط را در قسمت های استفاده شده از کد خود بنویسید:

با استفاده از System. IO. Ports ؛

با استفاده از System. Threading ؛

این باعث می شود تا بتوانیم از متغیر SerialPort استفاده کنیم

مرحله 20:

تصویر
تصویر

در این اسکریپت ما قصد داریم متغیرهای زیر را ایجاد کنیم. اکنون توجه داشته باشید که من COM3 را دریافت کردم ، ممکن است برای شما متفاوت باشد همانطور که در ابتدای این مرحله صحبت کردیم. اگر 3 را با عددی که برای شما گفته بود جایگزین کنید.

مرحله 21:

تصویر
تصویر

در ابتدا به اسکریپت می گوییم که از OpenConnection استفاده کنید

تابع که ما قصد داریم کمی در آن بنویسیم

به روز رسانی بیشتر یک آزمایش است تا هر چیزی ، اما اگر می خواهید آن را وارد کنید ، باید پیام های ارسال شده به وحدت را آزمایش کنید. شما می توانید صادقانه آن را نادیده بگیرید.

مرحله 22:

تصویر
تصویر

اکنون برای این تابع OpenConnection اوکی کنید. این فقط یک بزرگ است

دستور if/else که اتصال را باز نگه می دارد فقط آن را مانند نوشته کپی کنید و باید خوب باشید.

مرحله 23:

تصویر
تصویر

حالا از کد آردوینو به یاد داشته باشید که من آن را بررسی کردم

سیگنال هایی که وحدت برای آن ارسال می شود

خوب این جایی است که اتفاق می افتد در مورد من ، 4 چراغ به هم متصل شدم ، بنابراین 4 عملکرد بسیار ساده نوشتم. تنها کاری که آنها انجام می دهند این است که با آنها تماس می گیرند و نامه ای به آردوینو ارسال می کنند. هنگامی که آردوینو آن حرف را دریافت می کند ، نور مربوط به حرف فوق را روشن می کند.

مرحله 24:

تصویر
تصویر

شاید برای شما این سال پیش آمده باشد که چگونه می توانم اسم این را بگذارم

عملکرد؟ خوب این کار را با یک خط ساده در اسکریپت های دیگر c# که برای بازی خود استفاده می کنید انجام دهید. Sending. NameFunctionhere () ؛. به عنوان مثال در بازی من بازیکن وظیفه دارد 4 گوی رنگی را جمع آوری کند. بنابراین من یک اسکریپت کوچک نوشتم که مطمئن می شود وقتی به یکی نزدیک می شود و دکمه سمت راست را فشار می دهد ، آن را بر می دارد و این سیگنال را به آردوینو ارسال می کند که در این مورد ، گوی زرد برداشته شده است. برای اینکه بداند ، خوب باید LED زرد را روشن کنم:

شما می توانید این یک خط کد را در هر جایی که دوست دارید قرار دهید. اگر می خواهید با شروع بازی روشن شود ، آن را در تابع start قرار دهید. آیا می خواهید آن را روشن هنگامی که او می میرد آن را در عملکرد خود را برای مرگ بازیکنان. کمی آزمایش کنید من انتخاب می کنم که چراغ ها را به عنوان یک عنصر رابط کاربری خارج از بازی قرار دهم تا بتوانم گوی هایی را که باید جمع آوری کنید بدون بهم ریختن صفحه نمایش پیگیری کنم.

توصیه شده: