ویژگی های ماژول جوی استیک PS2
این ماژول شامل دو عدد جویاستیک به همراه دو کلید مجزا میباشد. جوی استیک یک قطعه بسیار پرکاربرد در رباتیک میباشد. هر ماژول جویاستیک به طور جداگانه دارای 2 پتانسیومتر در دو جهت X و Y و یک سوئیچ فشاری است. این ماژول دارای دو خروجی آنالوگ و یک خروجی دیجیتال است. در رباتیک از این قطعه میتوان برای کنترل قطعات متحرک و موتورها استفاده کرد.
نحوه عملکرد
این ماژول دارای دو عدد پتانسیومتر در دو جهت X و Y میباشد. مانند تصویر زیر در حالت نرمال، جویاستیک در حالت وسط خود قرار دارد و هر دو پتانسیومتر مقدار 2.5 ولت را بر روی خروجی آنالوگ قرار میدهند. از طریق تبدیل آنالوگ به دیجیتال(AD) این مقدار در آردوینو به عدد 512 تبدیل میشود. برای مثال اگر جویاستیک را در جهت محور X جابهجا کنیم، این مقدار از 512 تا 1023 تغییر میکند و اگر آن را در خلاف جهت محور X جابهجا کنیم، از 512 تا 0 کاهش مییابد. و به همین ترتیب برای محور Y نیز همین اتفاق می افتد.
معرفی پایه های (Pinout) ماژول جوی استیک PS2
این ماژول دارای 10 پایه به شرح زیر است:
- S-X1: پایه خروجی آنالوگ در محور X – جوی استیک اول
- S-Y1: پایه خروجی آنالوگ در محور Y – جوی استیک اول
- S-K1: پایه خروجی دیجیتال سوئیچ – جوی استیک اول
- S-X2: پایه خروجی آنالوگ در محور X – جوی استیک دوم
- S-Y2: پایه خروجی آنالوگ در محور Y – جوی استیک دوم
- S-K2: پایه خروجی دیجیتال سوئیچ – جوی استیک دوم
- SWA: سوئیچ مجزای A
- SWB: سوئیچ مجزای B
- VCC: تغذیه ماژول
- GND: زمین
پین اوت (Pinout) این ماژول را می توانید در تصویر زیر مشاهده کنید.
لوازمی که به آن احتیاج دارید
قطعات مورد نیاز
نرم افزارهای مورد نیاز
راه اندازی ماژول جوی استیک PS2 تولید YwRobot با آردوینو
گام اول: سیم بندی
مطابق مدار زیر،ماژول را به آردوینو وصل کنید.
گام دوم : کد
کد زیر را روی برد آردوینو آپلود کنید.
/*
YwRobot-PS2-Joystick-Module
made on 16 Nov 2020
by Amir Mohammad Shojaee @ Electropeak
Home
*/
#define x1 A0
#define y1 A1
#define k1 2
#define swa 3
#define x2 A4
#define y2 A5
#define k2 6
#define swb 7
void setup() {
pinMode(k1,OUTPUT);
pinMode(k2,OUTPUT);
pinMode(swa,OUTPUT);
pinMode(swb,OUTPUT);
Serial.begin(9600);
}
void loop() {
int x1_axis=analogRead(x1);
int y1_axis=analogRead(y1);
int x2_axis=analogRead(x2);
int y2_axis=analogRead(y2);
Serial.print("x1_axis: ");
Serial.print(x1_axis);
Serial.print(" y1_axis: ");
Serial.print(y1_axis);
Serial.print(" x2_axis: ");
Serial.print(x2_axis);
Serial.print(" y2_axis: ");
Serial.println(y2_axis);
if(digitalRead(k1)==HIGH){
Serial.println(" k1 pressed ");
while(digitalRead(k1)==HIGH){}
}
if(digitalRead(swa)==HIGH){
Serial.println(" swa pressed ");
while(digitalRead(swa)==HIGH){}
}
if(digitalRead(k2)==HIGH){
Serial.println(" k2 pressed ");
while(digitalRead(k2)==HIGH){}
}
if(digitalRead(swb)==HIGH){
Serial.println(" swb pressed ");
while(digitalRead(swb)==HIGH){}
}
delay(200);
}
در این برنامه شما میتوانید به طور کامل عملکرد این ماژول را بررسی کنید. مقادیر چهار جهت X1، Y1، X2 و Y2 بر روی سریال مانیتور قابل مشاهده است. میتوانید با تغییر در وضعیت جویاستیک ها، تغییر مقادیر خروجی آنها را به راحتی مشاهده کنید. در ضمن با فشار هر یک از کلیدها، فشار دادن آن کلید در خروجی سریال مانیتور اعلام میشود.
به عکس زیر توجه کنید. برای مثال هر دو جوی استیک را ابتدا در خلاف جهت محور Y حرکت دادهایم و سپس سوئیچ هر کدام را فشار دادیم.