آموزش آردوینو پروژه های آردوینو

ساخت لابیرنت با آردوینو و جوی استیک

نوشته شده توسط حسین فهیمی

به نام خدا

تو این پست می خوام ساخت لابیرنت(Labyrinth) با آردوینو و کنترل اون رو با جوی استیک و سروو آموزش بدم.

لابیرنت (Labyrinth یا ماز چوبی) یک بازی مبتنی بر تمرکز حواس است که در آن میبایست یک گوی فلزی را از نقطه شروع به نقطه پایان برسانید. وجود حفره های متعدد در مسیر گوی، باعث می‌شود که با کوچکترین خطایی، شما بازنده بازی باشید. لذا برای پیروز شدن در این بازی، نیاز به هماهنگی کامل چشم و دست دارید. همین الان بازی‌های ویدئویی را کنار بگدارید و تمرکز حواس خود را به چالش بکشید. شما میتوانید در جمع دوستان و آشنایان، لابیرنت را به عنوان بازی به یک رقابت داغ تبدیل کنید.

جالب است بدانید که برای این بازی رکوردهای جهانی با زمان های خیلی کم،ثبت شده است و برخی افراد حرفه ای،این بازی را با دوگوی همزمان انجام می‌دهند. شاخص ارزش بازی لابیرنت در سایت‌های خارجی، ۸٫۴ از ۱۰ و شاخص آی کیوی آن ۱۶۱ از ۲۰۰ می‌باشد. لازم به ذکر است که با استفاده از برد ” آردوینو Arduino ” میتوان لابیرنت یا ماز چوبی را بوسیله یک دسته کنترل و یا حتی گوشی تلفن همراه، انجام داد. این بازی با یک جوی استیک در دو محور X و Y کنترل میشود.

photo_2016-08-24_04-54-09

موارد لازم برای ساخت لابیرنت (Labyrinth) :

 

اتصالات :

  • سیم زرد سرووی ۱ به پین ۹ آردوینو
  • سیم زرد سرووی ۲ به پین ۱۰ آردوینو
  • سیم های قرمز سرووها به Vcc 5V آردوینو
  • سیم های قهوه ای سرووها به Gnd آردوینو
  • Gnd جوی استیک به Gnd آردوینو
  • Vcc جوی استیک به Vcc 5v آردوینو
  • پین X (محور X) جوی استیک به پین A0 آردوینو
  • پین Y (محور Y) جوی استیک به پین A1 آردوینو

 

 

اینم کد :

#include <Servo.h>
Servo xservo;
Servo yservo;

void setup () {
  xservo.attach(10);
  yservo.attach(9);
}

void loop () {
  int joystek[2];
  joystek[1] = analogRead(A0);
  joystek[2] = analogRead(A1);
  joystek[1] = map(joystek[1], 0, 1023, 0, 20);
  joystek[2] = map(joystek[2], 0, 1023, 0, 20);
  xservo.write(joystek[1]);
  yservo.write(joystek[2]);
}

 

 

فراخوانی کتابخانه ی سروو

#include <Servo.h>

 

ساخت دو شی از جنس سروو با نام xservo و yservo

Servo xservo;
Servo yservo;

 

شروع حلقه ی محدود Setup

void setup () {

 

معرفی کردن پین هایی که سرووها به آنها متصل هستند و پایان حلقه ی Setup

 xservo.attach(10);
  yservo.attach(9);
}

 

شروع حلقه ی loop

void loop () {

 

معرفی دو متغییر با نام joystek

  int joystek[2];

 

خواندن مقدار آنالوگ A0 و ریختن مقدار آن درون رجیستر joystek[1]

  joystek[1] = analogRead(A0);

 

خواندن مقدار آنالوگ A1 و ریختن مقدار آن درون رجیستر joystek[2]

  joystek[2] = analogRead(A1);

 

تناسب بندی بین دو مقدار رجیستر ها و عددی بین ۰ تا ۲۰ برای سروو

joystek[1] = map(joystek[1], 0, 1023, 0, 20);
joystek[2] = map(joystek[2], 0, 1023, 0, 20);

 

دستور دادن به سروو برای رفتن به موقعیت خود بر اساس میزان حرکت جوی استیک و پایان حلقه ی loop

  xservo.write(joystek[1]);
  yservo.write(joystek[2]);
}

 

اگر از زاویه های چرخش سرووها راضی نیستید ، میتونید عدد دلخواه رو در قسمت تابع map ،  به جای عدد ۲۰ را بنویسید….

 

ویدیو راه اندازی لابیرنت با آردوینو Arduino

 

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

حسین فهیمی

تبادل نظر و رفع عیب با ثبت دیدگاه

۱۰ دیدگاه