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

پکیج ۳۷ سنسور آردوینو – آموزش جوی استیک JoyStick

نوشته شده توسط علیرضا قربانی

با اولین آموزش از سری آموزش‌های سنسورکیت آردوینو در خدمتتون هستم . در اولین آموزش به راه اندازی ماژول جوی استیک  به همراه آردوینو  Uno می‌پردازیم. در ادامه‌ی آموزش با مرجع تخصصی آردوینو ، دیجی اسپارک همراه باشید.

 


ماژول جوی استیک


جوی استیک Joystick PS2 یک ماژول با خروجی آنالوگ و قابلیت شبیه سازی مختصات اهرم در راستای دو محور X و Y می‌باشد. در بسیاری از پروژه‌های رباتیک نیاز به جوی استیک کاملا مشهود است. ماژول جوی استیک JoyStick قابلیت حرکت در تمام زوایا در راستای محور X , Y را دارد. بر روی ماژول جوی استیک JoyStick دو پتانسیومتر ۱۰ کیلو با زاویه ۹۰ درجه در کنار یکدیگر قرار گرفته‌اند. با تغییر وضعیت اهرم قرار گرفته شده بر روی ماژول در راستای محور X,Y بسته به مسیر و جهت انتخابی، ولتاژ خروجی بین ۰ تا ۵ ولت DC تغییر خواهد کرد. هنگامی که ماژول جوی استیک را به میکروکنترلر متصل می‌کنید، در خروجی تا مقدار ۵۱۲ را در حالت Resting می‌توانید بخوانید. در حالت کلی با تغییر اهرم ماژول جوی استیک  مقدار  ۰ تا ۱۰۲۳ را می‌توانید در خروجی ماژول ببینید. ماژول جوی استیک JoyStick دارای ۴ پایه به ترتیب GND , 5v , VRx , VRy , SW می‌باشد. پایه VRx مروبط به تغییرات اهرم جوی استیک در راستای محور X  همان محور افقی می‌باشد. پایه VRy  مروبط به تغییرات اهرم جوی استیک در راستای محور Y همان محور عمودی می‌باشد. پایه SW مربوط به کلید فشاری بر روی ماژول می‌باشد. در حالت عادی خروجی پین SW ، برابر با ۵ ولت DC است و در صورت فشار دادن کلید ولتاژ خروجی پایه SW  به ۰ ولت تغییر می‌کند. ولتاژ خروجی دو پایه VRx و VRy در حالت عادی ۲٫۵ ولت می‌باشد. با تغییر وضعیت اهرم قرار گرفته شده بر روی ماژول، ولتاژ خروجی دو پایه VRx و VRy بین ۰ تا ۵ ولت تغییر خواهد کرد.

 


مشخصات فنی جوی استیک


  • VCC: تامین تغذیه (۵ ولت از آردوینو).
  • GND: زمین (زمین مشترک با آردوینو).
  • VRx: خروجی آنالوگ محور X.
  • VRy: خروجی آنالوگ محور Y.
  • SW: خروجی دیجیتال دکمه‌ها.
  • PS2_DAT، PS2_CMD، PS2_SEL، PS2_CLK: این‌ها برای اتصال جوی استیک با استفاده از رابط PS2 است (با آردوینو استفاده نمی‌شود).

 


بررسی پایه های جوی استیک


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

  • VCC (تغذیه): این پایه برای تامین تغذیه ماژول استفاده می‌شود و به طور معمول به منبع تغذیه ۵ ولت آردوینو متصل می‌شود.
  • GND (زمین): این پایه برای اتصال به زمین (GND) آردوینو استفاده می‌شود تا با آردوینو یک زمین مشترک داشته باشد.
  • VRx (خروجی آنالوگ محور X): این پایه خروجی آنالوگ جوی استیک برای محور X است. زمانی که جوی استیک حرکت می‌کند، ولتاژ آنالوگ متناسب با موقعیت محور X تولید می‌شود که می‌تواند با استفاده از تابع analogRead() در آردوینو خوانده شود.
  • VRy (خروجی آنالوگ محور Y): این پایه خروجی آنالوگ جوی استیک برای محور Y است. همانند پایه VRx، ولتاژ آنالوگ متناسب با موقعیت محور Y تولید می‌شود و با استفاده از تابع analogRead() در آردوینو قابل خواندن است.
  • SW (خروجی دیجیتال دکمه‌ها): این پایه خروجی دیجیتال مربوط به دکمه‌های جوی استیک است. وقتی دکمه‌ها فشار داده می‌شوند، این پایه یک سیگنال دیجیتالی (HIGH یا LOW) تولید می‌کند که با استفاده از تابع digitalRead() در آردوینو قابل خواندن است.


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


این ماژول یک ماژول بسیار ساده‌ با خروجی آنالوگ و قابلیت اندازه گیری مختصات اهرم جوی استیک در  راستای دو محور x  و y  می‌باشد . این جوی استیک قابلیت حرکت در تمامی زوایا را داشته و همچنین دارای یک کلید فشاری نیز می باشد. از این جوی استیک می توان در ساخت انواع کنترلرهای ربات و کوادکوپتر و… استفاده کرد. بر روی این ماژول دو عدد پتانسیومتر ۱۰ کلیواهم جهت اندازه گیری حرکت اهرم جوی استیک در راستای دو محور x و y وجود دارد . مکانیزم کار به این صورت است که با نغییر وصعیت اهرم میزان ولتاژ خروجی ماژول تغییر می‌کند و ما از طریق ADC  متوجه می‌شویم که ماژول در چه وضعیتی قرار دارد.

سنسور کیت آردوینو جوی استیک

 

پین GND و ۵v+ که مربوط به تعذیه ماژول می‌باشد و باید به تریب به GND آردوینو و مثبت ۵ ولت DC متصل شود.

پین SW که مربوط به کلید فشاری قرار گرفته بر روی جوی‌استیک می‌باشد .در حالت عادی خروجی این پین  ۵+ ولت DC  است و در صورت فشار دادن آن ولتاژ خروجی آن به ۰ ولت تغییر می‌کند. ( این پین به پین شماره ۸ آردوینو متصل می‌شود)

پین VRx : این پین مروبط به تغییرات اهرم جوی استیک در راستای محور X  (محور افقی ) می‌باشد . در حالت عادی ولتاژ خروجی این پین برابر ۲٫۵ ولت می‌باشد و برحسب تغییر وضعیت اهرم از راست به چپ به تریب ولتاژ خروجی این پین میان دو بازه ۵ الی ۰ ولت تغییر می‌کند. ( این پین به پین A0 برد آردوینو متصل می‌شود)

پین VRy : این پین مروبط به تغییرات اهرم جوی استیک در راستای محور  y  (محور عمودی ) می‌باشد . در حالت عادی ولتاژ خروجی این پین برابر ۲٫۵ ولت می‌باشد و برحسب تغییر وضعیت اهرم از بالا به پایین به تریب ولتاژ خروجی این پین میان دو بازه ۵ الی ۰ ولت تغییر می‌کند. ( این پین به پین A1 برد آردوینو متصل می‌شود)

 

 


برنامه نویسی


برای برنامه نویسی این ماژول ما باید به وسیله‌ی مبدل آنالوگ به دیجیتال (ADC)  ولتاژ‌های خروجی پین‌های VRx و VRy را اندازه‌گیری کنیم.همانطور که گفته شد ولتاژ‌های این دو پین میان بازه‌ی ۰  الی ۵ ولت تغییر می‌کند پس هنگامی که این ولناژ آنالوگ توسط  ADC  به مقادیر دیجیتال تبدیل می‌شود ، مقادیر بدست آمده بین ۰ الی ۱۰۲۳ می‌باشد.

  • VRy : در هنگام تبدل به مقادیر دیجیتال ، در بالاترین نقظه دارای مقدار ۱۰۲۳ و در پایین ترین نقظه برابر ۰ می‌باشد.
  • VRx : در هنگام تبدیل به مقادیر دیجیتال ، در راست ترین نقطه دارای مقدار۱۰۲۳ و در جپ ترین نقطه برابر ۰ می‌باشد.

 

Arduino-PS2-Joystick-Output-Orientation
Arduino-PS2-Joystick-Output-Orientation

 

قابل ذکر است برای تبدیل ولتاژ آنالوگ به ولتاز دیجیتال از تابع   analogRead(pin)   استفاده می‌شود. که پارامتر pin ، شماره پین مورد نظر ما بر روی بورد آردوینو می‌باشد.همانظور که گفته شد یک کلید نیز برای فشرده شدن بر روی جوی استیک قرار دارد که در صورت فشرده شدن مقدار ۰ ولت و در حالت عادی مقدار ۵ ولت بر  روی پین SW اعمال می‌شود. برای بررسی وضعیت کلید باید آن را به صورت پول‌آپ در بیاوریم که برای این کار از تابع زیر استفاده می‌کنیم.

 

pinMode(pin, INPUT_PULLUP);

 


نمونه‌ی کد آردوینو


در مثال زیر وضعیت اهرم جوی استیک بررسی شده و مختصات آن بر روی سریال مانیتور نرم افزار آردوینو نمایش داده می‌شود.

int JoyStick_X = A0; // محور x 
int JoyStick_Y = A1; // محور Y
int JoyStick_Z = 8; // کلید
void setup()
{
	
	pinMode(JoyStick_Z, INPUT_PULLUP); // قرار دادن پین  کلید در وضعیت پول‌آپ
	Serial.begin(9600); // 9600 bps
}
void loop()
{
	int x, y, z;
	x = analogRead(JoyStick_X);
	y = analogRead(JoyStick_Y);
	z = digitalRead(JoyStick_Z);
	Serial.print(x);
	Serial.print(",");
	Serial.print(y);
	Serial.print(",");
	Serial.println(z);
	delay(100);
}

 

این کد یک برنامه برای خواندن مقادیر محور‌ها (X و Y) و کلید یک جوی‌استیک است که به برد آردوینو متصل شده‌است. جوی‌استیک معمولاً دارای دو محور (افقی و عمودی) و یک کلید (دکمه) است که می‌تواند در کاربردهای مختلفی مانند بازی‌ها، رباتیک و کنترل حرکتی مورد استفاده قرار گیرد.
ابتدا آرایه‌ای از متغیرها تعریف شده است:
  • JoyStick_X: متغیر محور X که به پین A0 متصل شده است.
  • JoyStick_Y: متغیر محور Y که به پین A1 متصل شده است.
  • JoyStick_Z: متغیر کلید (دکمه) که به پین ۸ متصل شده است.
در تابع setup():
پین کلید (JoyStick_Z) به عنوان ورودی (INPUT) تنظیم می‌شود و با استفاده از INPUT_PULLUP، پین به‌عنوان یک ورودی داخلی با مقاومت پول‌آپ کانفیگ می‌شود. این کار باعث می‌شود که وقتی کلید فشرده نشده است، ولتاژ پین باشد و وقتی کلید فشرده شود، پین به زمین متصل می‌شود.
پورت سریال (Serial) با سرعت ۹۶۰۰ بیت بر ثانیه (bps) فعال می‌شود.
در تابع loop():
مقادیر محورها (X و Y) با استفاده از تابع analogRead() خوانده می‌شوند. تابع analogRead() ارزش آنالوگ ورودی (بین ۰ و ۱۰۲۳) را خوانده و آن را به مقدار دیجیتال تبدیل می‌کند.
مقدار کلید (دکمه) با استفاده از تابع digitalRead() خوانده می‌شود. این تابع یک وضعیت دیجیتال (HIGH یا LOW) را از پین ورودی خوانده و برمی‌گرداند.
مقادیر محورها و کلید با استفاده از Serial.print() و Serial.println() به کامپیوتر ارسال می‌شوند. این داده‌ها می‌توانند توسط نرم‌افزاری مانند مانیتور سریال آردوینو یا هر برنامه‌ای که از پورت سریال استفاده می‌کند، دریافت و پردازش شوند.
با استفاده از delay(100)، حلقه loop() به مدت ۱۰۰ میلی‌ثانیه توقف می‌کند و سپس دوباره اطلاعات را از جوی‌استیک خوانده و ارسال می‌کند.
این کد به عنوان یک نمونه ساده می‌تواند در برنامه‌ها و پروژه‌هایی که نیاز به کنترل حرکتی و کارکرد جوی‌استیک دارند، استفاده شود. در کاربردهای واقعی، ممکن است نیاز به تعریف وظایف و عملکردهای متنوع‌تری داشته باشید که به محورها و کلیدهای دیگر جوی‌استیک نیاز دارند.

سخت افزار مورد نیاز


آردوینو Uno

جوی استیک Joystick

 

در صورت تمایل به انجام پروژه‌های بیشتر در ارتباط با جوی استیک می‌توانید به لینک‌های زیر مراجعه نمایید.

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

آموزش راه اندازی nrf24L01 به همراه جوی استیک و آردوینو

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

علیرضا قربانی

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

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

۳ دیدگاه

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

    • با سلام
      همانطور که مشاهده می کنید بنده شروع به آموزش دادن سنسور های موجود در آن پکیج کردم و در روز حدود ۲ آموزش از سنسور های پکیج آموزش داده می شود

  • سلام من میخوام ۵ تا سروو را کنترل کنم با جوی استیک باید چی کارکنم؟؟؟؟