فهرست مطالب:
- مرحله 1: آنچه شما نیاز دارید
- مرحله 2: ساختن: مرکز کنسول ، راه اندازی سپر
- مرحله 3: ساختمان: مرکز کنسول ، سیم کشی سپر
- مرحله 4: ساختن کنترلرها ، تنظیم قطعات شما
- مرحله 5: اختیاری: محوطه
- مرحله ششم: برنامه نویسی: آردوینو
- مرحله 7: برنامه نویسی: HTML
- مرحله 8: برنامه نویسی: P5.js و Javascript
- مرحله 9: اجرای برنامه
- مرحله دهم: جلو رفتن
تصویری: کنترلرهای آردوینو: 10 مرحله (همراه با تصاویر)
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:57
یک سیستم کنترل بازی آردوینو با استفاده از آردوینو و کتابخانه p5.js. ایده این کار ایجاد یک پروژه آردوینو است که به راحتی قابل تکرار و توسعه است. اتصالات کنترل کننده به گونه ای طراحی شده اند که از حسگرها و ورودی های مختلفی استفاده کنند که بسته به هر کنترل کننده قابل تعویض هستند.
این پروژه همچنین برای استفاده از کتابخانه جاوا اسکریپت p5.js به همراه کتابخانه p5.play طراحی شده برای p5.js. این کتابخانه ها به ما امکان می دهند بازی های خود را با سهولت برنامه ریزی کنیم. وب سایت p5.play دارای مجموعه ای از آموزش ها و مثال هایی است که کاربران می توانند برای آن بازی بسازند. این پروژه به کاربران امکان می دهد مهارت های توسعه سخت افزاری و نرم افزاری خود را تمرین کنند.
مرحله 1: آنچه شما نیاز دارید
ابزارها:
- آهن لحیم کاری
- لحیم کاری
- استریپرهای سیم
- برش های جانبی
- انبر
سخت افزار:
- برد سازگار با آردوینو (من از تخته Sparkfun Redboard و همچنین Arduino Uno و Leonardo استفاده کردم)
-
تابلوی عالی:
- تخته های سبز رنگ 8 در 6 سانتی متر
- برد برد Aduino Uno shield
-
سنسورهای مختلف
- جوی استیک
- دکمه ها (با مقاومت ، 10k اهم ، همراه آنها)
- پتانسیومترها
- سنسورهای فلکس
- سنسورهای فشار
- و غیره…
-
سیم:
- تک سیم (من از 26 AWG Solid استفاده کردم)
- سیم روبان و چین
- سرفصل های Break Away (حداقل 20 مورد از این موارد)
-
سخت افزار اختیاری (به جای آن می توانید از مقوا و کراوات فشرده/زیپ استفاده کنید):
- تخته نان و کابل های بلوز برای نمونه سازی
- محوطه های چاپ سه بعدی
- اتصال دهنده های سخت افزاری (من از پیچ M2.5 استفاده کردم)
نرم افزار:
- آردوینو IDE
-
کتابخانه p5.js
P5. بازی کتابخانه نیز هست
- p5. کنترل سریال
- Node.js
مرحله 2: ساختن: مرکز کنسول ، راه اندازی سپر
سرصفحه ها را روی تخته perf Arduino Uno shield لحیم کنید.
- من با سربرگ های محافظ (قدرت ، آنالوگ و دیجیتال) شروع کردم
- بعد پین های هدر 2x5 هستند. می توانید از هدرهای 2x5 یا فقط 2 ردیف 5 سرصفحه جداگانه استفاده کنید. من آنها را با A3 و A4 به صورت عمودی ردیف کردم و 2 فاصله بین آنها گذاشتم.
مرحله 3: ساختمان: مرکز کنسول ، سیم کشی سپر
در مرحله بعد ، ما می خواهیم سیم های خود را روی سپر هدایت کنیم. راه اندازی سیم ها در بالا آسان تر است ، اما اگر می خواهید ظاهر تمیزتری داشته باشید ، می توانید آنها را در قسمت پایین اجرا کنید.
می خواهید هنگام مسیریابی این سیم ها به شماتیک (شماتیک عقاب برای بارگیری در دسترس است) توجه کنید. همچنین می توانید از راهنمای رنگ دیدن کنید تا در این زمینه به شما کمک کند.
ایده این طراحی سپر این است که از هر کنترلر 3 ورودی آنالوگ و 5 ورودی دیجیتال اجازه دهد. این به طور کامل از تمام ورودی های آنالوگ در Arduino Uno و سیمهای باقی مانده روی کابل روبان ما استفاده می کند.
مرحله 4: ساختن کنترلرها ، تنظیم قطعات شما
اولین قدم برای ساختن کنترلر این است که برنامه ریزی کنید از کدام حسگرها استفاده کنید. در مثالهای من ، من یک کنترلر معمولی با جوی استیک و چند دکمه دارم. من همچنین یک کنترلر با دو پتانسیومتر کشویی دارم.
اگر می خواهید این را تکرار کنید ، می توانید تصاویر من را برای قرار دادن مشاهده کنید.
مرحله بعدی این است که کابل روبان خود را به تخته پرف لحیم کنید.
- کابل روبان را بچسبانید و قلع کنید
- کابل روبان را به مرکز بالای تخته ورق خود بچسبانید.
مرحله بعدی مسیریابی سیم های خود است. من ابتدا سیم (5 ولت/سیم قرمز) و زمین (سیم قهوه ای) را به سنسورها وصل کردم. سپس ورودی های آنالوگ را سیم کشی کردم. استفاده از کابل نارنجی (آنالوگ A0 یا A3) برای حرکت افقی و کابل زرد (آنالوگ A1 یا A4) برای حرکت عمودی آسان بود.
برای یکنواخت نگه داشتن همه چیز ، من یک دکمه کوچک فشار به رنگ بنفش روی همه کنترلرهایم وصل کردم. این مورد برای مواردی مانند بستن پورت سریال (بعداً به این موضوع می پردازم) و همچنین منوها یا گزینه ها مفید است.
اگر مایل هستید به این مورد نگاه کنید ، یک طرح کلی از کنترلر جوی استیک خود را بارگذاری کرده ام. از نمودار خروجی ما می توانید امکان اتصال هر کنترلر (3 ورودی آنالوگ و 5 دیجیتال) را مشاهده کنید.
مرحله 5: اختیاری: محوطه
این مرحله اختیاری است ، اما اگر به چاپگر سه بعدی دسترسی داشته باشید ، نتیجه پروژه شما کمی تصفیه شده و کامل تر به نظر می رسد. همانطور که در نمونه های اولیه من مشاهده می کنید ، من از یک تکه مقوا ساده استفاده کردم تا مانع از فشار انگشتان شما در اتصالات لحیم کاری در پایین تخته های چربی شود.
می توانید مدلهای سه بعدی من را که به این مرحله متصل شده اند ، بیابید. من محفظه هایی را برای مرکز برای Arduino Uno/Leonardo و Sparkfun RedBoard ایجاد کرده ام (این برد کمی گسترده تر است و از مینی USB استفاده می کند).
برای کنترل کننده ها ، می توانید آنها را با پیچ M2.5 وصل کنید. مهره را در کنار PCB نگه داشتم و از واشر و پیچ در پایین استفاده می کنم.
من همچنین مدل سه بعدی لغزنده های دستگیره را برای پتانسیومترهایی که استفاده کردم قرار داده ام.
همه فایلهای سه بعدی را می توانید در GitHub پیدا کنید.
مرحله ششم: برنامه نویسی: آردوینو
بیایید با تنظیم یک طرح ساده برای آزمایش شروع کنیم. پیشنهاد می کنم از آموزش ایجاد شده توسط ITP در NYU استفاده کنید. برای انجام این آموزش ، باید p5.serialcontroll و node.js را نصب کرده باشید. در این آموزش ، شما با راه اندازی Arduino برای ارسال داده های سریال که توسط کتابخانه جاوا اسکریپت ما قابل استفاده است ، p5.js. برای این کار می توانید از هاب و کنترلری که در مراحل قبل ایجاد کردیم استفاده کنید ، یا می توانید مدارهای نشان داده شده در آموزش را تکرار کنید. این آموزش از پین ورودی آنالوگ A0 در Arduino Uno استفاده می کند که روی سیم نارنجی اولین کنترلر شما نقشه برداری شده است.
آموزش بعدی که می خواهید دنبال کنید را می توانید در اینجا پیدا کنید. این آموزش شما را از طریق تنظیم چندین ورودی و استفاده از آنها در p5.js. در آموزش ، ورودی های آنالوگ A0 و A1 استفاده می شود. اینها با سیمهای نارنجی و زرد کنترلر 1 سیستم ما مطابقت دارد.
پس از گذراندن آموزش های بالا ، می توانیم آردوینو را برنامه ریزی کنیم. کد مورد نظر ما در زیر آمده است:
// کنترل کننده 1const int dig2 = 2؛ // blue const int dig3 = 3؛ // بنفش const int dig4 = 4؛ // خاکستری const int dig5 = 5؛ // سفید const int dig6 = 6؛ // سیاه // کنترل کننده 2 const int dig7 = 7؛ // blue const int dig8 = 8؛ // بنفش const int dig9 = 9؛ // خاکستری const int dig10 = 10؛ // سفید const int dig11 = 11؛ // سیاه
void setup () {
Serial.begin (9600)؛ while (Serial.available () <= 0) {Serial.println ("سلام")؛ // ارسال پیام شروع تأخیر (300) ؛ // منتظر 1/3 ثانیه} pinMode (dig2 ، INPUT) باشید ؛ pinMode (dig3 ، INPUT) ؛ pinMode (dig4 ، INPUT) ؛ pinMode (dig5 ، INPUT) ؛ pinMode (dig6 ، INPUT) ؛ pinMode (dig7 ، INPUT) ؛ pinMode (dig8 ، INPUT) ؛ pinMode (dig9 ، INPUT) ؛ pinMode (dig10 ، INPUT) ؛ pinMode (dig11 ، INPUT) ؛ }
حلقه خالی () {
if (Serial.available ()> 0) {// بایت ورودی را بخوانید: int inByte = Serial.read ()؛ // سنسور را بخوانید:
// ANALOG Controller 1
int analog0 = analogRead (A0) ؛ int analog1 = analogRead (A1) ؛ int analog2 = analogRead (A2) ؛ // ANALOG Controller 2 int analog3 = analogRead (A3)؛ int analog4 = analogRead (A4) ؛ int analog5 = analogRead (A5) ؛ // DIGITAL Controller 1 int digital2 = digitalRead (dig2)؛ int digital3 = digitalRead (dig3)؛ int digital4 = digitalRead (dig4) ؛
int digital5 = digitalRead (dig5)؛
int digital6 = digitalRead (dig6)؛ // DIGITAL Controller 2 int digital7 = digitalRead (dig7)؛ int digital8 = digitalRead (dig8)؛ int digital9 = digitalRead (dig9) ؛ int digital10 = digitalRead (dig10)؛ int digital11 = digitalRead (dig11)؛ // چاپ نتایج: Serial.print (analog0)؛ // [0] Serial.print ("،") ؛ Serial.print (analog1) ؛ // [1] Serial.print ("،") ؛ Serial.print (analog2) ؛ // [2] Serial.print ("،") ؛ // Start Controller 2 data Serial.print (analog3)؛ // [3] Serial.print ("،") ؛ Serial.print (analog4) ؛ // [4] Serial.print ("،") ؛ Serial.print (analog5)؛ // [5] Serial.print ("،") ؛ Serial.print (digital2)؛ // [6] Serial.print ("،") ؛ Serial.print (digital3)؛ // [7] Serial.print ("،") ؛ Serial.print (digital4)؛ // [8] Serial.print ("،") ؛ Serial.print (digital5)؛ // [9] Serial.print ("،") ؛ Serial.print (digital6)؛ // [10] Serial.print ("،") ؛ // شروع كنترلر 2 داده Serial.print (digital7)؛ // [11] Serial.print ("،") ؛ Serial.print (digital8)؛ // [12] Serial.print ("،") ؛ Serial.print (digital9)؛ // [13] Serial.print ("،") ؛ Serial.println (digital10)؛ // [14] Serial.print ("،") ؛ Serial.println (digital11)؛ // [15]}}
این کد داده های سریال هر دو کنترلر ما را به عنوان یک آرایه 16 عددی ارسال می کند. 6 عدد اول از این اعداد ورودی های آنالوگ ما (بین 0-1023) و 10 مقدار باقی مانده مقادیر دیجیتال ما (0 یا 1) هستند.
هنگامی که کد ما بارگذاری شد ، می توانیم آن را با باز کردن مانیتور سریال و تایپ مقدار در مانیتور سریال مان ، همانطور که در آموزش دوم از ITP انجام دادیم ، آزمایش کنیم. ما باید رشته ای از مقادیر خود را با کاما جدا کنیم.
مرحله 7: برنامه نویسی: HTML
هنگامی که Arduino خود را راه اندازی کردیم و کار کردیم ، می توانیم برنامه نویسی موارد وب خود را شروع کنیم. کد HTML بسیار ساده است.
بدن {padding: 0؛ حاشیه: 0؛}
کد html به سادگی فایل های جاوا اسکریپت ما را به هم پیوند می دهد. بیشتر کد ما در واقع در فایل skj.js ما اتفاق می افتد.
مرحله 8: برنامه نویسی: P5.js و Javascript
هنگامی که HTML خود را تنظیم کردیم ، می توانیم روی JavaScript خود کار کنیم. اگر قبلاً این کار را نکرده اید ، باید p5.js و p5.play را بارگیری کرده و آنها را به پوشه کتابخانه های خود در فهرست وب سایت خود اضافه کنید.
- p5.js
- p5. بازی
در مرحله قبل ، ما فایل HTML خود را طوری تنظیم کردیم که کتابخانه های p5.js و p5.play خود را فراخوانی کند. ما همچنین آن را برای استفاده از فایل sketch.js خود تنظیم کرده ایم که در آن بیشتر برنامه نویسی خود را انجام می دهیم. در زیر کد اسکلت ما آمده است. شما همچنین می توانید آن را در اینجا پیدا کنید.
// سریال Variablesvar سریال؛ // متغیر برای نگهداری نمونه ای از کتابخانه سریال پورت varName = 'COM4'؛ // نام پورت سریال خود را در اینجا پر کنید // متغیرهای جهانی بازی ---------------
// تابع راه اندازی ----------------------
function setup () {createCanvas (640 ، 480) ؛ سریال = جدید p5. SerialPort ()؛ // نمونه جدیدی از کتابخانه serialport serial.on ('list'، printList) ایجاد کنید؛ // یک عملکرد بازخوانی برای رویداد لیست سریال serial.on ('متصل' ، serverConnected) ؛ // تماس برای اتصال به سرور serial.on ("باز" ، portOpen) ؛ // فراخوانی برای باز شدن پورت serial.on ('data'، serialEvent)؛ // فراخوانی برای ورود داده های جدید serial.on ('error'، serialError)؛ // فراخوانی خطاها serial.on ('close'، portClose)؛ // callback برای بستن درگاه serial.list ()؛ // لیست پورت های سریال serial.open (portName) ؛ // بازکردن پورت سریال} // تابع رسم ----------------------- تابع draw () {پس زمینه (0)؛ // black background} // داده های سریال را در اینجا تفسیر کنید ---------- تابع serialEvent () {// یک رشته را از پورت سریال بخوانید // تا زمانی که بازگشت و خط جدید new new: var inString = سریال را دریافت کنید. readStringUntil ('\ r / n')؛ // بررسی کنید که آیا در واقع یک ssetring در آنجا وجود دارد: if (inString.length> 0) {if (inString! == 'hello') {// در صورت سلام ، آن را نادیده بگیرید var sensors = split (inString، '، ') ؛ // رشته را در کاما if (sensors.length> 16) {// در صورت وجود شانزده عنصر (6 آنالوگ ، 10 دیجیتال) تقسیم کنید // از داده های حسگر در اینجا استفاده کنید:
}
} serial.write ('x')؛ // ارسال یک بایت با درخواست داده های سریال بیشتر}} // دریافت لیست پورت ها: function printList (portList) {// portList مجموعه ای از نامهای پورت سریال برای (var i = 0؛ i <portList.length؛ i ++) است {// لیست کنسول را نمایش دهید: print (i + "" + portList )؛ }} function serverConnected () {print ('متصل به سرور.')؛ } function portOpen () {print ('پورت سریال باز شد.')} function serialError (err) {print ('در پورت سریال مشکلی پیش آمد.' + err)؛ } function portClose () {print ('پورت سریال بسته شد.')؛ } تابع closeCode () {serial.close (portName)؛ بازگشت null؛ } window.onbeforeunload = closeCode؛
هنگامی که اسکلت را ذخیره کردید. شما می توانید از این مقادیر مشابه نحوه انجام آن در آموزش ITP استفاده کنید. رشته ای از مقادیری که ما در مرحله 6 از آردوینو ارسال کردیم ، به عنوان یک آرایه 16 عددی ارسال می شود. در زیر جایی است که ما این آرایه را تجزیه می کنیم.
// تفسیر داده های سریال در اینجا ----------
تابع serialEvent () {// یک رشته را از پورت سریال بخوانید // تا زمانی که کارتریج بازگشت و newline دریافت کنید: var inString = serial.readStringUntil ('\ r / n')؛ // بررسی کنید که آیا در واقع یک ssetring در آنجا وجود دارد: if (inString.length> 0) {if (inString! == 'hello') {// در صورت سلام ، آن را نادیده بگیرید var sensors = split (inString، '، ') ؛ // رشته را روی کاما if (sensors.length> 16) {// اگر شانزده عنصر (6 آنالوگ ، 10 دیجیتال) وجود دارد // در اینجا از داده های حسگر استفاده کنید:}} serial.write ('x')؛ // ارسال یک بایت با درخواست داده های سریال بیشتر}}
اکنون می توانیم برنامه خود را اجرا کنیم تا ببینیم آیا کار می کند یا خیر!
مرحله 9: اجرای برنامه
اکنون می توانیم برنامه خود را اجرا کنیم تا ببینیم آیا کار می کند یا خیر. شما می توانید بازی خود را با استفاده از فایل skeleton.js در فایل قبلی ما ایجاد کنید یا از بازی ساده Pipe که در اینجا یافت می شود استفاده کنید.
مشابه آزمایشگاه ITP ، برای اجرای برنامه خود ، مراحل زیر را دنبال می کنیم.
- آردوینو را با کنترلرهایی که قصد استفاده از آنها را دارید وصل کنید.
- p5.serialcontrol را باز کنید
- پورت طرح p5 خود را به پورت مورد استفاده تغییر دهید (اگر از اسکلت استفاده می کنید ، این در خط 3 است)
- فایل HTML را که به طرح p5 شما پیوند دارد باز کنید
اگر رسانه های خارجی مانند تصاویر یا فونت های بارگیری شده دارید ، می خواهید این را روی سرور اجرا کنید. در صورت تمایل می توانید یک سرور پایتون محلی ساده را اجرا کنید.
مرحله دهم: جلو رفتن
برای پیشرفت بیشتر و توسعه بازی های بیشتر در این زمینه ، می توانید نمونه های مختلفی را از فرم p5 دنبال کنید. بازی که در اینجا یافت می شود. در زیر نمونه ای از یک بازی پیچیده تر است که من ایجاد کرده ام. این بازی 1 در مقابل 1 تیرانداز تانک است. می توانید تمام منابع مربوط به آن را در GitHub پیدا کنید.
توصیه شده:
آداپتور آردوینو نانو به آردوینو Uno: 6 مرحله (همراه با تصاویر)
آردوینو نانو به آردوینو Uno آداپتور: آردوینو نانو یک عضو خوب ، کوچک و ارزان از خانواده آردوینو است. این تراشه بر اساس تراشه Atmega328 ساخته شده است ، چیزی که آن را به اندازه برادر بزرگترش آردوینو اونو قدرتمند می کند ، اما می توان آن را با پول کمتری تهیه کرد. در Ebay اکنون نسخه های چینی می توانند
نحوه ساخت بازی چند نفره با کنترلرهای آردوینو: 6 مرحله
چگونه با کنترلرهای آردوینو یک بازی چند نفره بسازیم: آیا تا به حال فکر کرده اید که چگونه توسعه دهندگان بازی ها بازی های شگفت انگیزی را خلق می کنند که مردم جهان از انجام آنها لذت می برند؟ خوب ، امروز من می خواهم با ساخت یک بازی چند نفره کوچک که توسط کنترو آردوینو کنترل می شود ، فقط یک نکته کوچک در مورد آن ارائه کنم
همه کنترلرهای تطبیقی: 7 مرحله
All Adaptive Controller: Desarrollo e Implementación En este apartado se realizará un anllisis de los elementos necesarios para la creación del prototipo propuesto en este trabajo، tanto de software como de hardware، además se dará un breve resumen del desarrollo y la imple
برد بلند ، 1.8 کیلومتر ، ارتباط بی سیم آردوینو تا آردوینو با HC-12 .: 6 مرحله (همراه با تصاویر)
برد طولانی ، 1.8 کیلومتر ، ارتباطات بی سیم آردوینو تا آردوینو با HC-12. ماژول ارتباطی بسیار مفید ، بسیار قدرتمند و آسان برای استفاده است. ابتدا می روی
ارزان ترین آردوینو -- کوچکترین آردوینو -- آردوینو پرو مینی -- برنامه نویسی -- آردوینو ننو: 6 مرحله (همراه با تصاویر)
ارزان ترین آردوینو || کوچکترین آردوینو || آردوینو پرو مینی || برنامه نویسی || آردوینو ننو: …………………………. لطفاً برای ویدیوهای بیشتر به کانال YouTube من مشترک شوید ……. .این پروژه در مورد نحوه ارتباط با کوچکترین و ارزانترین آردوینو است. کوچکترین و ارزان ترین آردوینو arduino pro mini است. شبیه آردوینو