دسته‌بندی نشده

آموزش آردوینو – قسمت هفتم – ماژول جوی استیک

joystick cover

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

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

 


int sw = 2;
int jox = A0;
int joy = A1 ;
int jox_input ;
int joy_input ;
int sw_input ;
void setup() {
Serial.begin(9600);
pinMode(sw , INPUT);
}

void loop() {
jox_input = analogRead(jox);
joy_input = analogRead(joy);
sw_input = digitalRead(sw);
Serial.print("jox = ");
Serial.print(jox_input) ;
Serial.print (" joy = ");
Serial.print( joy_input );
Serial.print(" button stat is: ");
Serial.println ( sw_input);
delay(3000);
}

// l298 pin
int ENa = 10 ;
int ENb = 5 ;
int IN1 = 9 ;
int IN2 = 8 ;
int IN3 = 7 ;
int IN4 = 6;

// joy stic pin
int sw = 2;
int jox = A0;
int joy = A1 ;
int jox_input ;
int joy_input ;
int sw_input ;

void setup() {
Serial.begin(9600);
pinMode(sw , INPUT);
pinMode(ENa , OUTPUT);
pinMode(ENb , OUTPUT);
pinMode(IN1 , OUTPUT);
pinMode(IN2 , OUTPUT);
pinMode(IN3 , OUTPUT);
pinMode(IN4 , OUTPUT);
}

void loop() {
jox_input = analogRead(jox);
joy_input = analogRead(joy);
sw_input = digitalRead(sw);
int forwards = map(jox_input , 530 , 1023 , 0 , 255);
int backwards = map (jox_input , 510 , 0 , 0 , 255);

if (jox_input >= 550 && ( joy_input >450 && joy_input < 600)){
analogWrite(ENa , forwards);
analogWrite(ENb , forwards);
digitalWrite(IN1 ,HIGH);
digitalWrite (IN2 , LOW);
digitalWrite(IN3 , LOW);
digitalWrite(IN4 , HIGH);
}

else if (jox_input <= 450 && (joy_input > 450 && joy_input < 600 )){

analogWrite(ENa , backwards);
analogWrite(ENb , backwards);
digitalWrite(IN1 ,LOW);
digitalWrite (IN2 , HIGH);
digitalWrite(IN3 , HIGH);
digitalWrite(IN4 , LOW);

}

else if (joy_input <= 700 && jox_input >= 300){
analogWrite(ENb , backwards);
digitalWrite(IN1 ,LOW);
digitalWrite (IN2 ,LOW );
digitalWrite(IN3 ,HIGH );
digitalWrite(IN4 ,LOW );

}

else if (joy_input >= 550 && jox_input >= 550){

analogWrite(ENa , forwards);
digitalWrite(IN1 ,LOW);
digitalWrite (IN2 , HIGH);
digitalWrite(IN3 , LOW);
digitalWrite(IN4 , LOW);

}
else if (joy_input >= 550 && jox_input <= 650){
analogWrite(ENa , backwards);
digitalWrite(IN1 ,HIGH);
digitalWrite (IN2 , LOW);
digitalWrite(IN3 , LOW);
digitalWrite(IN4 , LOW);

}

else if (joy_input <= 550 && jox_input <= 600){
analogWrite(ENb , forwards);
digitalWrite(IN1 ,LOW);
digitalWrite (IN2 , LOW);
digitalWrite(IN3 , LOW);
digitalWrite(IN4 , HIGH);

}

}

 


موضوع قسمت بعدی آموزش

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

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

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