آموزش راه اندازی کنترل LED با جوی استیک توسط آردوینو + پروژه

سلام خدمت دانش پژوهان عزیز امید وارم که حالتون خوب باشه  😛

و تا اینجا مطالب ما برای شما  مفید واقع شده باشه

ما در این جلسه  قصد داریم تا با راه اندازی ماژول جوی استیک  با آردوینو به کنترل LED بپردازیم

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

 

وسایل مورد نیاز برای راه اندازی جوی استیک و کنترل LED با آردوینو:

[icon name=”check-circle” class=”” unprefixed_class=””]  یک عدد کابل USB پرینتر

[icon name=”check-circle” class=”” unprefixed_class=””] یک عدد برد آردوینو UNO

[icon name=”check-circle” class=”” unprefixed_class=””] یک عدد برد برد

[icon name=”check-circle” class=”” unprefixed_class=””] تعدادی سیم برد برد برای اتصالات

[icon name=”check-circle” class=”” unprefixed_class=””] چهار عدد LED رنگی

[icon name=”check-circle” class=”” unprefixed_class=””] یک عدد ماژول جوی استیک

[icon name=”check-circle” class=”” unprefixed_class=””] چهار عدد مقاومت 330 اهم

نکته:

[icon name=”star-half-o” class=”” unprefixed_class=””] دقت کنید جوی استیک با توجه به ساختار اهرمی مانند آن از دو پتانسیومتر در زوایه ۹۰ درجه بر روی یک پایهتشکیل شده ‌است.

[icon name=”star-half-o” class=”” unprefixed_class=””] این ماژول در حالتی که اهرم‌ها هیچ حرکتی در راستای محور X و Y ندارند، خروجی ولتاژ ۲٫۵ ولت را تولید می‌کند.

[icon name=”star-half-o” class=”” unprefixed_class=””]  با حرکت شافت جوی استیک در راستای محور X و Y ولتاژ خروجی از ۰ تا ۵ ولت DC تغییر خواهد کرد.

[icon name=”star-half-o” class=”” unprefixed_class=””] جوی استیک دارای ۴ پایه به ترتیب GND , 5v , VRx , VRy , SW می‌باشد. پایه VRx مربوط به تغییرات اهرم  در راستای محور X یا همان محور افقی می‌باشد.

[icon name=”star-half-o” class=”” unprefixed_class=””]  پایه VRy مربوط به تغییرات اهرم جوی استیک در راستای محور Y یا همان محور عمودی می‌باشد. پایه SW مربوط به

کلید فشاری بر روی ماژول می‌باشد.

[icon name=”star-half-o” class=”” unprefixed_class=””]  در حالت عادی خروجی پین SW ، برابر با ۵ ولت DC است و در صورت فشار دادن کلید ولتاژ خروجی پایهSW  به ۰ ولت تغییر می‌کند.

علاقمه مندانی که دوست دارند آموزش PWM و راه اندازی ماژول L298 با آردوینو رو هم یاد بگیرن بر روی لینک کلید نماییند.

نمای مدار ماژول جوی استیک(JoyStick):

آموزش راه اندازی کنترل LED با جوی استیک توسط آردوینو+پروژه

در تصویر بالا با ماژول جوی استیک آشنا شدیم و در تصویر پایین با نحوه اتصالات آشنا خواهیم شد.

 

آموزش راه اندازی کنترل LED با جوی استیک توسط آردوینو+پروژه

 

در تصویر بالا با نحوه اتصال پایه ها به آردوینو آشنا شدیم ولی در جدول پایین هم اتصالات را خط به خط توضیح داده ایم.

 

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

[su_table responsive=”yes”]

پین های آردوینو پین های متصل به برد برد
پایه 8 مثبت LED
پایه 9 مثبت LED
پایه 10 مثبت LED
پایه 11 مثبت LED
پایه GND پایه های منفی LED

[/su_table]

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

[su_table responsive=”yes”]

پین های آردوینو پین های جوی استیک
پایه GND پایه GND
پایه +5V پایه +5V
پایه A0 پایه URX
پایه A1 پایه URY

[/su_table]

دستورات راه اندازی کنترل LED با جوی استیک:

[icon name=”circle-o” class=”” unprefixed_class=””] ;int a = 1

این دستور برای تعریف پایه ها به آردوینو در برنامه می باشد.

مانند کد زیر:

int a = 1;

[icon name=”circle-o” class=”” unprefixed_class=””] ;(pinMode(a, INPUT 

این دستور مربوط به معرفی کردن ورودی های پایه جوی استیک می باشد.

مانند کد زیر:

pinMode(a, INPUT);

[icon name=”circle-o” class=”” unprefixed_class=””] ;(0pinMode(b, INPUT

این دستور مربوط به معرفی کردن ورودی های جوی استیک می باشد.

مانند کد زیر:

pinMode(b, INPUT);

[icon name=”circle-o” class=”” unprefixed_class=””] ;(pinMode(c, OUTPUT

این دستور برای معرفی کردن خروجی های LED می باشد.

مانند کد زیر:

pinMode(c, OUTPUT);

[icon name=”circle-o” class=”” unprefixed_class=””] ;int xval

این دستور برای تعریف پایه های محور x ها جوی استیک در برنامه می باشد.

مانند کد زیر:

int xval;

[icon name=”circle-o” class=”” unprefixed_class=””] ;int yval

این دستور برای تعریف پایه های محور y ها جوی استیک دربرنامه می باشد.

مانند کد زیر:

int yval;

[icon name=”circle-o” class=”” unprefixed_class=””] ;(xval = analogRead(a

این دستور برای خواندن دیتا های پایه محور x ها ی جوی استیک در آردوینو می باشد.

مانند کد زیر:

xval = analogRead(a);

[icon name=”circle-o” class=”” unprefixed_class=””] ;(yval = analogRead(b

این دستور برای خوااندن دیتا های پایه محور y ها ی جوی استیک در آردوینو می باشد.

مانند کد زیر:

yval = analogRead(b);

[icon name=”circle-o” class=”” unprefixed_class=””] (if(yval>1000

این دستور مربوط به شرط گذاری برای yval جوی استیک نسبت به بزرگ تر بودن عدد 1000 در برنامه می باشد..

مانند کد زیر:

if(yval>1000)

[icon name=”circle-o” class=”” unprefixed_class=””] ;(digitalWrite(g, HIGH

این دستور مربوط به روشن کردن led ما در برنامه می باشد.

مانند کد زیر:

digitalWrite(g, HIGH);

[icon name=”circle-o” class=”” unprefixed_class=””] ;(digitalWrite(g, LOW

این دستور مربوط به خاموش کردن led ما در برنامه می باشد.

مانند کد زیر:

digitalWrite(g, LOW);

[icon name=”circle-o” class=”” unprefixed_class=””] ;( if(yval < 50

این دستور برای شرط گذاری بر روی yval جوی استیک که باید کوچکتر از عدد 50 در برنامه نیز می باشد.

مانند کد زیر:

if(yval < 50)

سورس کامل برنامه:

[vc_row][vc_column][vc_message message_box_color=”pink” icon_fontawesome=”fa fa-cloud-download”]برای دانلود کامل برنامه و فایل های پروژه به صورت رایگان به پایین صفحه مراجعه کنید.[/vc_message][/vc_column][/vc_row]

int a = 1; 
int b = 0;
int c = 8;
int h = 9;
int g = 10;
int d = 11;
 
void setup() {
// تعریف ورودی و خروجی ها
  pinMode(a, INPUT);
  pinMode(b, INPUT);
  pinMode(c, OUTPUT);
  pinMode(h, OUTPUT);
  pinMode(g, OUTPUT);
  pinMode(d, OUTPUT);
  
}
  void loop() {
// تعریف پایه X
  int xval; 
// تعریف پایه Y
  int yval; 
// خواندن دیتا از پایه آنالوگ  از محور X
  xval = analogRead(a); 
// خواندن دیتا از پایه آنالوگ  از محور Y
  yval = analogRead(b);
   // شرط گذاری 
   if(yval>1000) {
// فعال شدن ال ای دی 
    digitalWrite(g, HIGH); 
  }
  else {
// غیر فعال شدن ال ای دی 
    digitalWrite(g, LOW); 
  }
 
  if(yval < 50) {
// فعال شدن ال ای دی 
    digitalWrite(d, HIGH); 
  }
  else {
 // غیر فعال شدن ال ای دی 
    digitalWrite(d, LOW);
  }
 if(xval>1000) {
// فعال شدن ال ای دی 
    digitalWrite(h, HIGH); 
  }
  else {
// غیر فعال شدن ال ای دی 
    digitalWrite(h, LOW);  
  }
 
  if(xval < 50) {
// فعال شدن ال ای دی 
    digitalWrite(c, HIGH); 
  }
  else {
// غیر فعال شدن ال ای دی 
    digitalWrite(c, LOW); 
  }
}

 

آموزش راه اندازی کنترل LED با جوی استیک توسط آردوینو+پروژه (2)

 

ویدیو راه اندازی کنترل led با جوی استیک:

 

 

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

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

[icon name=”check-circle” class=”” unprefixed_class=””] یک عدد برد آردوینو UNO

[icon name=”check-circle” class=”” unprefixed_class=””] تعدادی سیم برد برد برای اتصالات

[icon name=”check-circle” class=”” unprefixed_class=””] یک عدد ماژول جوی استیک

[icon name=”check-circle” class=”” unprefixed_class=””] یک عدد کابل USB پرینتر

[icon name=”check-circle” class=”” unprefixed_class=””] دو عدد موتور DC 12V

[icon name=”check-circle” class=”” unprefixed_class=””] یک عدد ماژول L298

 

نمای فنی ماژول L298:

آموزش راه اندازی کنترل LED با جوی استیک توسط آردوینو+پروژه (3)

 

در تصویر بالا با شمای فنی ماژول L298 آشنا شدیم و در تصویر پایین با نحوه اتصالات آشنا خواهیم شد

 

آموزش راه اندازی کنترل LED با جوی استیک توسط آردوینو + پروژه

آموزش راه اندازی کنترل LED با جوی استیک توسط آردوینو + پروژه

در تصویر بالا با نحوه اتصالات آشنا شدیم ولی توضیح خط به خط اتصالات در پایین داده شده است.

 

جدول اتصالات آردوینو به ماژول L298:

[su_table responsive=”yes”]

پین های مربوط به آردوینو پین های مربوط به L298
پایه 4 پایه IN2
پایه 5 پایه IN1
پایه 6 پایه IN3
پایه 7 پایه IN4
پایه 9 پایه ENA
پایه 10 پایه ENB
پایه +5V پایه +5V
پایه GND پایه GND

[/su_table]

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

[su_table responsive=”yes”]

پین های مربوط به آردوینو پین های مربوط به جوی استیک
پایه +5V پایه +5V
پایه GND پایه GND
پایه A0 پایه VRX
پایه A1 پایه VRY

[/su_table]

[icon name=”star-half-o” class=”” unprefixed_class=””] توجه داشته باشید بر روی ماژول L298 پایه ENA و پایه ENB وجود دارد.

[icon name=”star-half-o” class=”” unprefixed_class=””] در این آموزش باید سوکت پایه های ENAو ENB را باید در بیاوریم.

 

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

 

[icon name=”circle-o” class=”” unprefixed_class=””]  define enA 9

این دستور برای ست کردن ماژول به آردوینو می باشد.

مانند کد زیر:

#define enA 9

[icon name=”circle-o” class=”” unprefixed_class=””]  ;int motorSpeedA = 0

برای تعریف کردن متغییر های برنامه خودمان به آردوینو می باشد.

مانند کد زیر:

int motorSpeedA = 0;

[icon name=”circle-o” class=”” unprefixed_class=””]  ;(pinMode(enA, OUTPUT

دستور بالا مربوط به تعریف کردن خروجی پایه مورد نظر ماژول  به برنامه آردوینو می باشد.

مانند کد زیر:

pinMode(enA, OUTPUT);

[icon name=”circle-o” class=”” unprefixed_class=””]  ;(pinMode(in1, OUTPUT

دستور بالا مربوط به تعریف کردن خروجی های موتور می باشد.

مانند کد زیر:

pinMode(in1, OUTPUT);

[icon name=”circle-o” class=”” unprefixed_class=””]  ;(int xAxis = analogRead(A0

در دستور بالا ما محور x های جوی استیک را مساوی پایه های آنالوگ قرار داده ایم.

مانند کد زیر:

int xAxis = analogRead(A0);

[icon name=”circle-o” class=”” unprefixed_class=””]  (if (yAxis < 470

در دستور بالا شرطی قرار داده ایم که اگر 470 بزرگ تر از yaxis  شرط زیر انجام بشود.

مانند کد زیر:

if (yAxis < 470)

[icon name=”circle-o” class=”” unprefixed_class=””]  ;(digitalWrite(in1, HIGH

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

مانند کد زیر:

digitalWrite(in1, HIGH);

[icon name=”circle-o” class=”” unprefixed_class=””]  ;(digitalWrite(in2, LOW

دستور بالا مربوط به ست کردن موتور ۲برای عقب رفتن می باشد.

مانند کد زیر:

digitalWrite(in2, LOW);

[icon name=”circle-o” class=”” unprefixed_class=””]  ;(motorSpeedA = map(yAxis, 470, 0, 0, 255

دستور بالا مربوط به سرعت موتور a را مساوی محور y قرار داده ایم که در این متغییر map سرعت موتور

را تعیین کرده ایم

مانند کد زیر:

motorSpeedA = map(yAxis, 470, 0, 0, 255);

[icon name=”circle-o” class=”” unprefixed_class=””]  (else if (yAxis > 550

دستور بالا مربوط به شرط می باشد که اگر 550بزرگتر از محور y باشد شرط های زیر انجام می شود

مانند کد زیر:

else if (yAxis > 550)

[icon name=”circle-o” class=”” unprefixed_class=””]  ;(digitalWrite(in1, LOW

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

مانند کد زیر:

digitalWrite(in1, LOW);

[icon name=”circle-o” class=”” unprefixed_class=””]  ;(digitalWrite(in2, HIGH

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

مانند کد زیر:

digitalWrite(in2, HIGH);

[icon name=”circle-o” class=”” unprefixed_class=””]  ;motorSpeedA = 0

در دستور بالا ما متغییر  موتور a  را مساوی صفر قرار داده ایم.

مانند کد زیر:

motorSpeedA = 0;

[icon name=”circle-o” class=”” unprefixed_class=””]  ;(int xMapped = map(xAxis, 470, 0, 0, 255

دستور بالا برای تبدیل مقادیر محور X جوی استیک  از 470 به 0 به مقدار 0 تا 255 افزایش می دهد.

مانند کد زیر:

int xMapped = map(xAxis, 470, 0, 0, 255);

[icon name=”circle-o” class=”” unprefixed_class=””]  ;motorSpeedA = motorSpeedA – xMapped

دستور بالا برای حرکت به سمت چپ – کاهش سرعت موتور سمت چپ، افزایش سرعت موتور نیز می باشد.

مانند کد زیر:

motorSpeedA = motorSpeedA - xMapped;

[icon name=”circle-o” class=”” unprefixed_class=””]  (if (motorSpeedA < 0

[icon name=”circle-o” class=”” unprefixed_class=””]  ;motorSpeedA = 0

دستور بالا  شرطه اگر سرعت موتور a کوچک تر از صفر بود در شرط سرعت موتور صفر شود.

مانند کد زیر:

if (motorSpeedB > 255) {
      motorSpeedB = 255;
    }

[icon name=”circle-o” class=”” unprefixed_class=””]  ;(analogWrite(enA, motorSpeedA

دستور بالا مربوط به ارسال سیگنال pwm به موتور a  می باشد.

مانند کد زیر:

analogWrite(enA, motorSpeedA);

سورس کامل برنامه:

[vc_row][vc_column][vc_message message_box_color=”pink” icon_fontawesome=”fa fa-cloud-download”]برای دانلود کامل برنامه و فایل های پروژه به صورت رایگان به پایین صفحه مراجعه کنید.[/vc_message][/vc_column][/vc_row]

//برای ست کردن ماژول به آردوینو از این خط استفاده می کنیم
#define in1 4
#define in2 5
#define in3 6
#define in4 7
//در این دستور ما متغغیرمان را تعریف می کنیم

int motorSpeedA = 255;
int motorSpeedB = 255;

void setup() {
  // در این دستور ما خروجی هایمان را تعریف می کنیم

  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
}

void loop() {
    //در این خط ما محور ایکس  را مساوی پایه های آنالوگ قرار داده ایم

  int xAxis = analogRead(A0); // Read Joysticks X-axis
  int yAxis = analogRead(A1); // Read Joysticks Y-axis

  //در این شرط ما تعریف کردیم که اگر 470 کوچک تر از محور وای شد شرط زیر انجام شود

  if (yAxis <470) {
  //برای ست کردن موتور که به سمت عقب می خواهد بیاید

    digitalWrite(in1, HIGH);
    digitalWrite(in2, LOW);
    digitalWrite(in3, HIGH);
    digitalWrite(in4, LOW);
  
  }
    //در این شرط اگر عدد مورد نظر بزرگتر از محور وای باشد شرط های زیر انجام می شود

    else if (yAxis > 570) {
   //برای ست کردن موتور که به سمت جلو می خواهد بیاید

    digitalWrite(in1, LOW);
    digitalWrite(in2, HIGH);
    digitalWrite(in3, LOW);
    digitalWrite(in4, HIGH);

  }
  
  else if (xAxis > 570) {
    // Set Motor A forward
    // Set Motor B forward
    digitalWrite(in3, LOW);
    digitalWrite(in4, HIGH);
    // Convert the increasing Y-axis readings for going forward from 550 to 1023 into 0 to 255 value for the PWM signal for increasing the motor speed
  }
  // شرط بعدی ما می باشد

  else if (xAxis < 470) {
  //در این شرط اگر 470 کوچک تر از محور ایکس باشد شرط های زیر انجام شود

    digitalWrite(in1, LOW);
    digitalWrite(in2, HIGH);

  }

  else {
   digitalWrite(in3, LOW);
       digitalWrite(in1, LOW);
           digitalWrite(in4, LOW);
               digitalWrite(in2, LOW);
  }

  
}

 

ویدیو راه اندازی پروژه :

جمع بندی:

در این آموزش چگونه راه اندازی جوی استیک برای کنترل LED با  آردوینو را یاد گرفتیم.

و همچنین ساخت پروژه راه اندازی ماژول جوی استیک و کنترل ربات با L298 را فرا گرفتیم.

از جمله کاربرد های آن کنترل هواپیما و یا کنترل جرثقیل

کنترل بازوهای رباتیک پزشکی

 

 

موفق پیروز باشید

امیدوارم از مطلب لذت برده باشید حتما سر به اینستاگرام و  بزنید

[wp_ulike]
اگر می‌خواهید از آخرین و محبوب‌ترین مقالات ما در ایمیل خود مطلع شوید، همین الان ایمیل و شماره موبایل خود را در کادر زیر وارد کنید:
تعداد علاقه مندانی که تاکنون عضو خبرنامه ما شده اند: 0 نفر
دیدگاه

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

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