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

سلام خدمت دانش پژوهان عزیز امید وارم که حالتون خوب باشه 😛
و تا اینجا مطالب ما برای شما مفید واقع شده باشه
ما در این جلسه قصد داریم تا با راه اندازی ماژول جوی استیک با آردوینو به کنترل LED بپردازیم
و در آخر می خواهیم به عنوان پروژه ، با ماژول جوی استیک با آردوینو به کنترل ربات بپردازیم
وسایل مورد نیاز برای راه اندازی جوی استیک و کنترل LED با آردوینو:
یک عدد کابل USB پرینتر
یک عدد برد آردوینو UNO
یک عدد برد برد
تعدادی سیم برد برد برای اتصالات
چهار عدد LED رنگی
یک عدد ماژول جوی استیک
چهار عدد مقاومت 330 اهم
نکته:
دقت کنید جوی استیک با توجه به ساختار اهرمی مانند آن از دو پتانسیومتر در زوایه ۹۰ درجه بر روی یک پایهتشکیل شده است.
این ماژول در حالتی که اهرمها هیچ حرکتی در راستای محور X و Y ندارند، خروجی ولتاژ ۲٫۵ ولت را تولید میکند.
با حرکت شافت جوی استیک در راستای محور X و Y ولتاژ خروجی از ۰ تا ۵ ولت DC تغییر خواهد کرد.
جوی استیک دارای ۴ پایه به ترتیب GND , 5v , VRx , VRy , SW میباشد. پایه VRx مربوط به تغییرات اهرم در راستای محور X یا همان محور افقی میباشد.
پایه VRy مربوط به تغییرات اهرم جوی استیک در راستای محور Y یا همان محور عمودی میباشد. پایه SW مربوط به
کلید فشاری بر روی ماژول میباشد.
در حالت عادی خروجی پین SW ، برابر با ۵ ولت DC است و در صورت فشار دادن کلید ولتاژ خروجی پایهSW به ۰ ولت تغییر میکند.
علاقمه مندانی که دوست دارند آموزش PWM و راه اندازی ماژول L298 با آردوینو رو هم یاد بگیرن بر روی لینک کلید نماییند.
نمای مدار ماژول جوی استیک(JoyStick):
در تصویر بالا با ماژول جوی استیک آشنا شدیم و در تصویر پایین با نحوه اتصالات آشنا خواهیم شد.
در تصویر بالا با نحوه اتصال پایه ها به آردوینو آشنا شدیم ولی در جدول پایین هم اتصالات را خط به خط توضیح داده ایم.
جدول اتصالات آردوینو به برد برد:
پین های آردوینو | پین های متصل به برد برد |
پایه 8 | مثبت LED |
پایه 9 | مثبت LED |
پایه 10 | مثبت LED |
پایه 11 | مثبت LED |
پایه GND | پایه های منفی LED |
جدول اتصالات جوی استیک به آردوینو:
پین های آردوینو | پین های جوی استیک |
پایه GND | پایه GND |
پایه +5V | پایه +5V |
پایه A0 | پایه URX |
پایه A1 | پایه URY |
دستورات راه اندازی کنترل LED با جوی استیک:
;int a = 1
این دستور برای تعریف پایه ها به آردوینو در برنامه می باشد.
مانند کد زیر:
int a = 1;
;(pinMode(a, INPUT
این دستور مربوط به معرفی کردن ورودی های پایه جوی استیک می باشد.
مانند کد زیر:
pinMode(a, INPUT);
;(0pinMode(b, INPUT
این دستور مربوط به معرفی کردن ورودی های جوی استیک می باشد.
مانند کد زیر:
pinMode(b, INPUT);
;(pinMode(c, OUTPUT
این دستور برای معرفی کردن خروجی های LED می باشد.
مانند کد زیر:
pinMode(c, OUTPUT);
;int xval
این دستور برای تعریف پایه های محور x ها جوی استیک در برنامه می باشد.
مانند کد زیر:
int xval;
;int yval
این دستور برای تعریف پایه های محور y ها جوی استیک دربرنامه می باشد.
مانند کد زیر:
int yval;
;(xval = analogRead(a
این دستور برای خواندن دیتا های پایه محور x ها ی جوی استیک در آردوینو می باشد.
مانند کد زیر:
xval = analogRead(a);
;(yval = analogRead(b
این دستور برای خوااندن دیتا های پایه محور y ها ی جوی استیک در آردوینو می باشد.
مانند کد زیر:
yval = analogRead(b);
(if(yval>1000
این دستور مربوط به شرط گذاری برای yval جوی استیک نسبت به بزرگ تر بودن عدد 1000 در برنامه می باشد..
مانند کد زیر:
if(yval>1000)
;(digitalWrite(g, HIGH
این دستور مربوط به روشن کردن led ما در برنامه می باشد.
مانند کد زیر:
digitalWrite(g, HIGH);
;(digitalWrite(g, LOW
این دستور مربوط به خاموش کردن led ما در برنامه می باشد.
مانند کد زیر:
digitalWrite(g, LOW);
;( if(yval < 50
این دستور برای شرط گذاری بر روی yval جوی استیک که باید کوچکتر از عدد 50 در برنامه نیز می باشد.
مانند کد زیر:
if(yval < 50)
سورس کامل برنامه:
برای دانلود کامل برنامه و فایل های پروژه به صورت رایگان به پایین صفحه مراجعه کنید.
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 با جوی استیک:
پروژه راه اندازی ماژول جوی استیک و کنترل ربات با L298:
وسایل مورد نیاز برای آموزش راه اندازی جوی استیک و کنترل ربات با آردوینو:
یک عدد برد آردوینو UNO
تعدادی سیم برد برد برای اتصالات
یک عدد ماژول جوی استیک
یک عدد کابل USB پرینتر
دو عدد موتور DC 12V
یک عدد ماژول L298
نمای فنی ماژول L298:
در تصویر بالا با شمای فنی ماژول L298 آشنا شدیم و در تصویر پایین با نحوه اتصالات آشنا خواهیم شد

در تصویر بالا با نحوه اتصالات آشنا شدیم ولی توضیح خط به خط اتصالات در پایین داده شده است.
جدول اتصالات آردوینو به ماژول L298:
پین های مربوط به آردوینو | پین های مربوط به L298 |
پایه 4 | پایه IN2 |
پایه 5 | پایه IN1 |
پایه 6 | پایه IN3 |
پایه 7 | پایه IN4 |
پایه 9 | پایه ENA |
پایه 10 | پایه ENB |
پایه +5V | پایه +5V |
پایه GND | پایه GND |
جدول اتصالات جوی استیک به آردوینو:
پین های مربوط به آردوینو | پین های مربوط به جوی استیک |
پایه +5V | پایه +5V |
پایه GND | پایه GND |
پایه A0 | پایه VRX |
پایه A1 | پایه VRY |
توجه داشته باشید بر روی ماژول L298 پایه ENA و پایه ENB وجود دارد.
در این آموزش باید سوکت پایه های ENAو ENB را باید در بیاوریم.
آشنایی با دستورات پروژه راه اندازی ماژول جوی استیک و کنترل ربات با L208:
define enA 9
این دستور برای ست کردن ماژول به آردوینو می باشد.
مانند کد زیر:
#define enA 9
;int motorSpeedA = 0
برای تعریف کردن متغییر های برنامه خودمان به آردوینو می باشد.
مانند کد زیر:
int motorSpeedA = 0;
;(pinMode(enA, OUTPUT
دستور بالا مربوط به تعریف کردن خروجی پایه مورد نظر ماژول به برنامه آردوینو می باشد.
مانند کد زیر:
pinMode(enA, OUTPUT);
;(pinMode(in1, OUTPUT
دستور بالا مربوط به تعریف کردن خروجی های موتور می باشد.
مانند کد زیر:
pinMode(in1, OUTPUT);
;(int xAxis = analogRead(A0
در دستور بالا ما محور x های جوی استیک را مساوی پایه های آنالوگ قرار داده ایم.
مانند کد زیر:
int xAxis = analogRead(A0);
(if (yAxis < 470
در دستور بالا شرطی قرار داده ایم که اگر 470 بزرگ تر از yaxis شرط زیر انجام بشود.
مانند کد زیر:
if (yAxis < 470)
;(digitalWrite(in1, HIGH
دستور بالا مربوط به ست کردن موتور برای عقب رفتن می باشد.
مانند کد زیر:
digitalWrite(in1, HIGH);
;(digitalWrite(in2, LOW
دستور بالا مربوط به ست کردن موتور ۲برای عقب رفتن می باشد.
مانند کد زیر:
digitalWrite(in2, LOW);
;(motorSpeedA = map(yAxis, 470, 0, 0, 255
دستور بالا مربوط به سرعت موتور a را مساوی محور y قرار داده ایم که در این متغییر map سرعت موتور
را تعیین کرده ایم
مانند کد زیر:
motorSpeedA = map(yAxis, 470, 0, 0, 255);
(else if (yAxis > 550
دستور بالا مربوط به شرط می باشد که اگر 550بزرگتر از محور y باشد شرط های زیر انجام می شود
مانند کد زیر:
else if (yAxis > 550)
;(digitalWrite(in1, LOW
دستور بالا برای ست کردن موتور که به سمت جلو می باشد.
مانند کد زیر:
digitalWrite(in1, LOW);
;(digitalWrite(in2, HIGH
دستور بالا برای ست کردن موتور که به سمت جلو می باشد.
مانند کد زیر:
digitalWrite(in2, HIGH);
;motorSpeedA = 0
در دستور بالا ما متغییر موتور a را مساوی صفر قرار داده ایم.
مانند کد زیر:
motorSpeedA = 0;
;(int xMapped = map(xAxis, 470, 0, 0, 255
دستور بالا برای تبدیل مقادیر محور X جوی استیک از 470 به 0 به مقدار 0 تا 255 افزایش می دهد.
مانند کد زیر:
int xMapped = map(xAxis, 470, 0, 0, 255);
;motorSpeedA = motorSpeedA – xMapped
دستور بالا برای حرکت به سمت چپ – کاهش سرعت موتور سمت چپ، افزایش سرعت موتور نیز می باشد.
مانند کد زیر:
motorSpeedA = motorSpeedA - xMapped;
(if (motorSpeedA < 0
;motorSpeedA = 0
دستور بالا شرطه اگر سرعت موتور a کوچک تر از صفر بود در شرط سرعت موتور صفر شود.
مانند کد زیر:
if (motorSpeedB > 255) { motorSpeedB = 255; }
;(analogWrite(enA, motorSpeedA
دستور بالا مربوط به ارسال سیگنال pwm به موتور a می باشد.
مانند کد زیر:
analogWrite(enA, motorSpeedA);
سورس کامل برنامه:
برای دانلود کامل برنامه و فایل های پروژه به صورت رایگان به پایین صفحه مراجعه کنید.
//برای ست کردن ماژول به آردوینو از این خط استفاده می کنیم #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 را فرا گرفتیم.
از جمله کاربرد های آن کنترل هواپیما و یا کنترل جرثقیل
کنترل بازوهای رباتیک پزشکی
موفق پیروز باشید
امیدوارم از مطلب لذت برده باشید حتما سر به اینستاگرام و بزنید
- در صورت مشکل در لینک دانلود یا خود فایل حتما در بخش خرابی لینک برامون بنویسید تا در سریع ترین زمان رسیدگی کنیم
- توجه فرمایید که اعلام گزارش خربی باعث بهتر شدن خدمات ما به شما خواهد بود
- برای دریافت لینک دانلود یک بار ثبت نام کنید و به صورت مستقیم دانلود کنید
پسورد فایل : robotafzar.com گزارش خرابی لینک

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