پروژه الکترونیکپروژه های Processingپروژه های آردوینوپروژه های بازی و سرگرمی

پروژه بازی انگری بردز با آردوینو و Processing (با پتانسیومتر و سنسور فلکس)

سلام. پروژه بازی انگری بردز با آردوینو (با استفاده از پتانسیومتر و سنسور فلکس) را آماده کردیم.

آموزش کنترل بازی Angry Birds با برد Arduino

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

سنسور فلکس
سنسور فلکس

پروژه کنترل بازی انگری بردز با آردوینو چگونه کار میکند ؟

برد آردوینو مقادیر پتانسیومتر و سنسور Flex را خوانده و آن ها را از طریق درگاه USB به لپ تاپ یا کامپیوتر از طریق Serial.write () منتقل میکند. ما اطلاعات دریافتی را با استفاده از پروسسینگ (نرم افزار Processing) میخوانیم. ما کد پروسسینگ را طوری برنامه ریزی میکنیم که هنگامی که سنسور فلکس کشیده شود، کلیک ماوس انجام میشود و بر اساس میزان کشیدگی آن (خم شدن آن)، نشانگر ماوس در جهت X حرکت میکند. سپس بر اساس مقدار پتانسیومتر ماوس در جهت Y حرکت میکند که همان زاویه و جهت پرتاب پرنده است.

برای اینکه این پروژه Angry Bird با استفاده از کد ارائه شده در فایل انتهای صفحه کار کند، قطعات خود را مطابق شماتیک مدار متصل کنید و کد آردوینو را بارگذاری کنید. سپس توجه داشته باشید که Arduino به کدام پورت شما متصل است و تغییرات لازم را در کد Processing ایجاد کرده و آن را را راه اندازی کنید.

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

شماتیک مدار کنترل بازی با Arduino

مدار برای بازی Angry Bird با استفاده از سنسورهای فلکس و پتانسیومتر آسان است.

شماتیک مدار کنترل بازی با Arduino

ما یک پتانسیلومتر و یک سنسور فلکس را به ورودی های آنالوگ (A0 ، A1) آردوینو متصل کرده ایم. خروجی سنسور Flex نیز با استفاده از مقاومت 47K پایین می آید. مدار ما به شکل زیر است. این بخش به خلاقیت شما بستگی دارد.

حتما ببینید :  آموزش پروژه آردوینو ربات ماشین کنترلی RC

پروژه کنترل بازی انگری بردز با آردوینو چگونه کار میکند ؟

قطعات مورد نیاز برای پروژه

  1. برد آردوینو Uno (یا هر نسخه دیگری)
  2. پتانسیومتر
  3. سنسور فلکس
  4. مقاومت 47 کیلو اهم

توضیحات کد آردوینو

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

ما نرخ کار برنامه را 9600 قرار میدهیم و خواندن مقادیر را از سنسور فلکس و پتانسیومتر شروع میکنیم. همانطور که میدانید تابع serial.write () تنها میتواند یک بایت داده را به طور همزمان ارسال کند. از آنجا که یک بایت یعنی 2^8 = 256 ، ما میتوانیم مقادیر 0 تا 256 را ارسال کنیم. بنابراین باید مقادیر خروجی سنسور فلکس و پتانسیومتر را فشرده کنیم.

برای اینکار از تابع map() در آردوینو استفاده میکنیم. تمام مقادیر حسگر Flex از 5 تا 100 تبدیل میشوند. بنابراین وقتی سنسور را خم میکنیم از 5 افزایش می یابد و هنگامی که آن را رها کنیم ، دوباره به 5 باز میگردد. با ارسال 1 ماوس فشرده میشوند و وقتی 0 ارسال کنیم، ماوس آزاد میشود.

  if (FlexValue>=65 && FlexValue<=120) //ممکن است این مقادیر با توجه به سنسور شما متفاوت باشد
  {
  FlexValue = map (FlexValue,120,65,0,100);  //بر طبق مقادیر تبدیل شده بین 0 تا 100

  if (FlexValue>=5) // 1 و 0 برای کلیک ماوس استفاده میشوند
   {
   Mclick=true;
   Serial.write(1);  //1 ارسال میشود برای کلیک چپ
   Serial.write(FlexValue); //مقادیر متفاوت سنسور فلکس برای میزان کشیده شدن پرنده
   }

  else
  {
  Mclick=false;
  Serial.write(0);}
  }

به همین ترتیب مقادیر دریافت شده از پتانسیومتر از 101 تا 200 تبدیل می شود و map () را می خواند و به درگاه لپ تاپ (COM) ارسال می شود.

if (potValue<=200)
 {
  potValue = map(potValue,0,200,101,201); //بر اساس تبدیل 101 تا 201
  Serial.write(potValue); //فاصله برای جابجایی ماوس در جهت Y
 }

پروژه بازی انگری بردز با آردوینو و پروسسینگ

توضیحات کد Processing

Processing (پروسسینگ = پردازش) یک برنامه توسعه دهی متن باز است و به راحتی می تواند برای توسعه پروژه های جالب با استفاده از آردوینو یا سایر میکروکنترلرها بارگیری و استفاده شود.

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

اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید.
حتما ببینید :  آموزش ساخت اسکرول بار LED نواری رنگی (رقص نور) با آردوینو

داده های وارد شده از درگاه COM باید با همان نرخ 9600 تنظیم شده در آردوینو توسط Processing خوانده شوند. شما باید بررسی کنید برد آردوینوی شما به کدام درگاه COM متصل است. برای من به پورت COM 0 متصل است میتواند برای شما متفاوت باشد.

port = new Serial(this,Serial.list()[0],9600);

سپس شروع به خواندن مقادیر میکنیم.

if (port.available()>0)
  {
    data=port.read();
    println(data); //خواندن مقادیر از پورت کام و ذخیره آن ها در متغیر
  }

  if (data>=101 && data<=201) //اگر مقادیر بین 101 تا 200 باشد از پتانسیومتر ارسال شده است.
  {
    Turn = int (map (data,101,201,0,100)); //برای چرخاندن منجنیق استفاده میشود
  }

  if (data>=5 && data <=100)  //اگر مقادیر از 5 تا 100 باشند از طرف سنسور فلکس هستند
  { Pull = int (map(data,5,100,0,100));} //استفاده از این مقادیر برای کشیدن پرنده

  if (data == 1)
  click = true; //استفاده از این مقدار برای فشردن کلید ماوس

  if (data == 0)
  click = false; //استفاده از این مقدار برای رها کردن کلید ماوس

پس از طبقه بندی داده ها، می توانیم ماوس را با استفاده از Robot Java Class در پروسسینگ کنترل کنیم. دستور :

robot.mouseMove (crntX-Pull ، crntY + Turn)؛

می توان برای انتقال ماوس به هر موقعیت دلخواه و خطوط

robot.mousePress (InputEvent.BUTTON1_DOWN_MASK)

استفاده کرد. و

robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK)؛

را می توان برای فشار دادن یا رها کردن دکمه ماوس استفاده کرد.

  if (click == false) //وقتی که سنسور فلکس خم نیست
  {
  crntX = (int)p.getX() ; crntY = (int)p.getY() ;
  if (Pull>50)
  robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); //رها کردن دکمه ماوس
  }


  if (click == true) //وقتی که سنسور فلکس خم است
  {
   robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); //فشردن دکمه ماوس
   robot.mouseMove(crntX-Pull, crntY+Turn); // تغییر مکان ماوس 
 //بر اساس مقادیر پتانسیومتر و سنسور فلکس
  }
}

پس از راه اندازی نرم افزار پردازش، این پنجره نیز نمایش داده میشود که میتوانید در آن میتوانید موقعیت ماوس و میزان چرخش و وضعیت کلید ماوس را مشاهده کنید.

توضیحات کد Processing

فیلم عملکرد پروژه

فیلم زیر به شما در درک نحوه کار این پروژه کمک میکند.

فیلم عملکرد مدار : کلیک کنید !

موارد موجود در فایل : سورس کامل ، شماتیک کامل ، کد Processing

[post_shop]

دانلود فایل های پروژه

[/post_shop] [lrm_form default_tab=”register” logged_in_message=””]

نظرتان را در مورد این مطلب با ستاره دادن اعلام کنید امیدوارم این مطلب برای شما مفید بوده باشد. نظرات ، مشکلات و پیشنهادات خود را در پایین صفحه اعلام کنید
برچسب ها

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا
بستن
بستن