آموزش راه اندازی کنترل 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):
در تصویر بالا با ماژول جوی استیک آشنا شدیم و در تصویر پایین با نحوه اتصالات آشنا خواهیم شد.
در تصویر بالا با نحوه اتصال پایه ها به آردوینو آشنا شدیم ولی در جدول پایین هم اتصالات را خط به خط توضیح داده ایم.
جدول اتصالات آردوینو به برد برد:
پین های آردوینو | پین های متصل به برد برد |
پایه 8 | مثبت LED |
پایه 9 | مثبت LED |
پایه 10 | مثبت LED |
پایه 11 | مثبت LED |
پایه GND | پایه های منفی LED |
جدول اتصالات جوی استیک به آردوینو:
پین های آردوینو | پین های جوی استیک |
پایه GND | پایه GND |
پایه +5V | پایه +5V |
پایه A0 | پایه URX |
پایه A1 | پایه URY |
دستورات راه اندازی کنترل 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)
سورس کامل برنامه:
برای دانلود کامل برنامه و فایل های پروژه به صورت رایگان به پایین صفحه مراجعه کنید.
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:
وسایل مورد نیاز برای آموزش راه اندازی جوی استیک و کنترل ربات با آردوینو:
[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:
در تصویر بالا با شمای فنی ماژول 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 |
[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);
سورس کامل برنامه:
برای دانلود کامل برنامه و فایل های پروژه به صورت رایگان به پایین صفحه مراجعه کنید.
//برای ست کردن ماژول به آردوینو از این خط استفاده می کنیم #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 گزارش خرابی لینک
Oops! We could not locate your form.
درباره امیرحسین تاراج بر
دانشجوی الکترونیک دانشگاه سراسری تهران و در زمینه ی آردوینو - رزبری پای در حال فعالیت هستم به ساخت رباتیک و کار های فنی علاقه مندم و در ربات افزار مشغول به کار هستم
نوشته های بیشتر از امیرحسین تاراج بر
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.