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

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

سلام ^.^

به سایت داناساز خوش اومدین

در این مطلب به راحتی یاد می گیریم که چگونه ماژول جوی استیک دو محوره رو به کمک آردوینو راه اندازی کنیم. پس با ما همراه باشید *.*

 

این ماژول برای کنترل و هدایت موتور، ماشین و به طور کل حرکت و جهت دهی در دو راستای عمودی و افقی کاربرد دارد.

 

این ماژول 5 پایه دارد.

  • GND: به زمین متصل می شود.
  • 5v + : به 5 ولت وصل می شود.
  • VRX: به ورودی آنالوگ آردوینو وصل می شود. ( حرکت در جهت X )
  • VRY: به ورودی آنالوگ وصل می شود. ( حرکت در جهت Y )
  • SW: به ورودی دیجیتال وصل می شود. مربوط به کلید روی جوی استیک است.

پروژه ای که می خوایم انجام بدیم، رقص نوری هست که با جوی استیک جهت دهی میشه.

 

وسایل و المان های مورد نیاز برای انجام این پروژه:

  • آردوینو
  • جوی استیک
  • ال ای دی قرمز و سفید
  • مقاومت
  • سیم

 

حالا کد رو با هم قدم به قدم می نویسیم:

1- اولین کار مشخص کردن متغیر ها و اسم گذاری پین های آردوینو هست.

int VRx = A0;
int VRy = A1;
int SW = 2;

2- برای استفاده از جوی استیک، نیاز هست که مقدار اولیه به داده هایی که از  ماژول می خونیم، بدیم و به اصطلاح اون رو کالیبره کنیم. به شکل زیر:

int xPosition = 0;
int yPosition = 0;
int SW_state = 0;
int mapX = 0;
int mapY = 0;

3- در قسمت ()void setup شروع به نوشتن پین های ورودی و خروجی می کنیم.

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

3 ورودی هم داریم که مربوط به ماژول هستند.

void setup() {
Serial.begin(9600);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
pinMode(A4, OUTPUT);
pinMode(VRx, INPUT);
pinMode(VRy, INPUT);
pinMode(SW, INPUT_PULLUP);

}

4- حالا وارد حلقه میشیم. اولین کاری که باید بکنیم اینه که ورودی های ماژول رو بخونیم.

void loop() {
xPosition = analogRead(VRx);
yPosition = analogRead(VRy);
SW_state = digitalRead(SW);

5- اگر در این حالت ورودی های ماژول رو در سریال مانیتور مشاهده کنید، متوجه میشین که از صفر شروع میشه و مقدار منفی نداره و بازه ی اعدادش هم بین 0 تا 1023 هست.

اما ما میخوایم بازه ی تغییراتش رو مطابق میل خودمون تغییر بدیم و از 100- تا 100+ بذاریم. بنابراین به شکل زیر می نویسیم:

mapX = map(xPosition, 0, 1023, -100, 100);
mapY = map(yPosition, 0, 1023, -100, 100);

6- با نوشتن خط های زیر می تونید ورودی ها رو در سریال مونیتور مشاهده کنید.

Serial.print(“X: “);
Serial.print(mapX);
Serial.print(” | Y: “);
Serial.print(mapY);
Serial.print(” | Button: “);
Serial.println(SW_state);

نمایش ورودی های ماژول جوی استیک در حالت کالیبره شده

7- حالا نوبت به نوشتن شرط هاست. برای چینش ال ای دی به صورت زیر:

شرط ها به این صورت است که با کشیدن جوی استیک به سمت چپ، ال ای دی های سمت چپ روشن شوند و همین طور جهت های دیگر.

ابتدا حالت اولیه را معرفی می کنیم که در آن ال ای دی قرمز روشن می شود:

if ((mapX>0)&(mapX<3)&(mapY>0)&(mapY<3)){
digitalWrite(3,HIGH);
}else{
digitalWrite(3,LOW);
}

حال برای 4 جهت اصلی شرطها را مشخص می کنیم.

if ((mapX>3)&(mapY>0)&(mapY<3)){
digitalWrite(4,HIGH);
delay(100);
digitalWrite(5,HIGH);
delay(100);
digitalWrite(6,HIGH);
delay(100);

نوشتن else بسیار ضروری است تا مشخص شود زمانی که شرط برقرار نیست برنامه چه کاری انجام دهد.

}else{
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);

}
if ((mapY<0)&(mapX>0)&(mapX<3)){
digitalWrite(7,HIGH);
delay(100);
digitalWrite(8,HIGH);
delay(100);
digitalWrite(9,HIGH);
delay(100);

}else{
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);

}
if ((mapX<0)&(mapY>0)&(mapY<3)){
digitalWrite(10,HIGH);
delay(100);
digitalWrite(11,HIGH);
delay(100);
digitalWrite(12,HIGH);
delay(100);

}else{
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);

}
if ((mapY>2)&(mapX>0)&(mapX<3)){
digitalWrite(A2,HIGH);
delay(100);
digitalWrite(A3,HIGH);
delay(100);
digitalWrite(A4,HIGH);
delay(100);

//
}else{
digitalWrite(A2,LOW);
digitalWrite(A3,LOW);
digitalWrite(A4,LOW);

}
}

برنامه ی ما تمام شد.

حالا اتصالات رو طبق پایه هایی که نوشته شده با دقت بچینید و برنامه را اجرا کنید.

این هم از کارکرد نهایی مدار:

 

حتما این برنامه رو بنویسید و اجرا کنید.

ویدیوهای قشنگتون رو با ما به اشتراک بذارید.

همه ی قطعات موجود در این آموزش در فروشگاه ما موجود است. لطفاً تماس بگیرید ^.^

روز و روزگار خوش

مهندس مریم عبادی نژاد

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد.