من یک ماشین کنترل شده با جوی استیک ساخته ام که می تواند به چپ، راست، جلو و عقب حرکت کند. من این را ایجاد کردم زیرا فکر می کردم یک پروژه چالش برانگیز با هدف سرگرم کننده و هیجان انگیز است.
![](https://duino4projects.com/wp-content/uploads/2022/07/Joystick-Controlled-Car.jpg)
تدارکات
![](https://duino4projects.com/wp-content/uploads/2022/07/Supplies-10.jpg)
- آردوینو Uno R3
- کنترل موتور L293D
- 2x موتور DC
- سروو موتور
- باتری 2 x 9 ولت (یا 1 باتری و 1 منبع تغذیه USB قابل حمل)
- 2 درپوش باتری
- مینی تخته نان
- جوی استیک آنالوگ B103
- بسیاری از کابل ها و سیم های جامپر
- پیچ گوشتی کوچک
- لاستیک های مینیاتوری 4 برابر
مرحله 1: تحقیق
![](https://duino4projects.com/wp-content/uploads/2022/07/Research-1.jpg)
اولین قدم در شروع هر پروژه، تحقیق است! وقتی این پروژه را شروع کردم، برای اولین بار برای دریافت ورودی از جوی استیک، کدی برای چرخش سروو و کدی برای چرخاندن موتورهای dc به صورت آنلاین روی کد تحقیق کردم. محصول نهایی من نتیجه تمام دانشی است که از تحقیقاتم به دست آوردم. خوشبختانه شما بچه ها می توانید این مرحله را نادیده بگیرید، یا این آموزش از نظر فنی تحقیق شماست؟ خوب هر چه که باشد، شما آماده ادامه دادن هستید.
مرحله 2: راه اندازی!
![](https://duino4projects.com/wp-content/uploads/2022/07/Setup.jpg)
اجزای خود را به هر قاب دلخواه خود وصل کنید. اگر قاب ندارید، همچنان می توانید این پروژه را ایجاد کنید! فقط مثل یک ماشین واقعی رانندگی نکنید. اطمینان حاصل کنید که 2 تایر کنترل شده توسط موتورهای DC در عقب و 2 تایر کنترل شده توسط موتور سروو در عقب هستند.
مرحله 3: سیم کشی تخته نان
![](https://duino4projects.com/wp-content/uploads/2022/07/Wiring-the-Breadboard.jpg)
در 2 ریل سمت چپ یا راست تخته نان خود، آنها را به پایه های GND و 5 ولت آردوینو وصل کنید. از آنجایی که تخته های نان مینی دارای ریل برقی و زمینی جداگانه نیستند، به جای آن از این 2 ریل برای تامین برق بقیه برد و به صورت جداگانه با استفاده از سیم استفاده خواهیم کرد. فراموش نکنید که ARDUINO خود را با استفاده از باتری 9 ولت یا منبع تغذیه قابل حمل برق بدهید.
مرحله 4: سیم کشی کنترل موتور L293D و موتورهای DC
![](https://duino4projects.com/wp-content/uploads/2022/07/Wiring-the-L293D-Motor-Control-and-DC-Motors.jpg)
ابتدا با استفاده از یک پیچ گوشتی، تمام پورت های آبی را باز کنید. از هر دو درگاه موتور، برق و زمین را به موتورهای DC خود وصل کنید. از 1 پورت از مجموعه 3 پورت، آن را به کابل برق یک باتری 9 ولت وصل کنید. و یک پورت دوم را به هر دو، یک پین زمین در آردوینو و کابل زمین درپوش باتری خود وصل کنید (بله، هر دو کابل در یک پورت هستند. این کار به این دلیل انجام می شود که L293D و آردوینو بتوانند با هم ارتباط برقرار کنند). پورت های IN1 و IN2 را به پایه های 5 و 6 آردوینو وصل کنید. IN3 و IN4 را به پایه های 9 و 10 وصل کنید.
مرحله 5: سیم کشی جوی استیک
![](https://duino4projects.com/wp-content/uploads/2022/07/Wiring-the-Joystick.jpg)
با استفاده از کابل های جامپر، پین Y یا VRY جوی استیک خود را به پایه A0 وصل کنید. X یا VRX را به پین A1 وصل کنید. قرار نیست از پین Bt در این پروژه استفاده شود. میتوانید فعلاً آن را جدا نگه دارید و بعداً آن را به یک ریل استفاده نشده در تخته نان وصل کنید. پینهای VCC و GND را به برد برد وصل کنید و با استفاده از سیمهای برق و ریل زمینی که در مرحله 2 راهاندازی کردیم، برق و زمین را برای آنها تامین کنید.
مرحله 6: سیم کشی سروو موتور
![](https://duino4projects.com/wp-content/uploads/2022/07/Wiring-the-Servo-Motor.jpg)
سروو موتور دارای 3 پین است. برق، زمین و پین سیگنال. به علاوه هر 3 پین داخل تخته نان. اتصال مربوطه را برق و زمین کنید و پایه سیگنال را با استفاده از سیم به پایه 3 ARDUINO وصل کنید.
مرحله 7: کد خود را شروع کنید!
![](https://duino4projects.com/wp-content/uploads/2022/07/Begin-Your-Code.jpg)
یک فایل .ino جدید ایجاد کنید و نام آن را هر چه دوست دارید بگذارید. اولین چیزی که باید اضافه کنیم هدرهایمان است. این برنامه فقط از 1 هدر که برای سروو موتور است استفاده می کند. هدر این است: "#include <Servo.h>". مطمئن شوید که این را در بالای کد خود، خارج از هر حلقه ای اضافه کرده اید. همچنین، متغیر را برای سروو موتور خود ایجاد کنید. این کار را در خط بعدی با فرمت ” Servo servoName; ".
مرحله 8: تعریف پین ها
![](https://duino4projects.com/wp-content/uploads/2022/07/Defining-the-Pins.jpg)
پایههای پایههای X و Y جوی استیک، پین سیگنال سروو موتور خود و همچنین پایههای هر موتور DC را مشخص کنید. تعریف یک متغیر به جای اعلام آن به عنوان یک متغیر به کامپایلر می گوید که مقدار این متغیرها هرگز تغییر نخواهد کرد. اساساً همان const int است. معمول است که متغیرهایی را تعریف کنید که می دانید آنها را تغییر نخواهید داد. نحوه تعریف متغیرهای خود را در تصویر بالا می بینید.
مرحله 9: اعلام متغیرهای نوع داده
![](https://duino4projects.com/wp-content/uploads/2022/07/Declaring-Data-Type-Variables.jpg)
یک متغیر برای ذخیره یک مقدار برای کنترل موتورهای DC و یک متغیر برای حفظ مقدار و زاویه مختصات Y جوی استیک خود اعلام کنید. این 3 متغیر را به صورت اعداد صحیح (int) اعلام کنید.
مرحله 10: راه اندازی Void
![](https://duino4projects.com/wp-content/uploads/2022/07/Void-Setup.jpg)
بیایید پین های خود را تنظیم کنیم! قبل از انجام این کار، باید سروو را راه اندازی کنیم. ما باید متغیر سروو خود را به پین سیگنال سروو موتور متصل کنیم. ما این کار را با استفاده از تابع "attach" انجام می دهیم که به صورت "servoName.attach (servoPin)" برنامه ریزی شده است. اکنون باید پایه های PWM خود را برای موتورهای DC خود تنظیم کنیم. هر 4 پین باید به عنوان خروجی تنظیم شوند زیرا ما از این پین ها برای دادن سیگنال مبتنی بر قدرت به موتورها استفاده خواهیم کرد تا آنها را با سرعت دلخواه خود حرکت دهیم. اطمینان حاصل کنید که همه اینها در تابع "void setup()" انجام می شود.
مرحله 11: خواندن جوی استیک و حرکت سروو
![](https://duino4projects.com/wp-content/uploads/2022/07/Reading-Your-Joystick-and-Moving-the-Servo.jpg)
قبل از شروع این مرحله، اجازه دهید تابعی به نام “void rotate Servo()” ایجاد کنیم. این تابعی است که ما تمام کدهای سروو خود را در آن قرار می دهیم. مطمئن شوید که این متغیر را در بالای () void loop تعریف کرده اید. سپس این تابع را در حلقه void با تایپ rotateServo(); فراخوانی کنید. ابتدا باید مقدار متغیر yValue را تعیین کنیم. ما می خواهیم yValue مقدار مختصات y باشد که از جوی استیک ارائه می شود. این کار را با استفاده از تابع analogRead() انجام خواهیم داد. بعد، باید مقدار متغیر yAngle خود را ترسیم کنیم. تابع map() ارائه شده به شما امکان می دهد محدوده ای از مقادیر را به یک محدوده جدید و متفاوت نگاشت کنید. ما متغیر را از 0 تا 179 ترسیم خواهیم کرد زیرا این زوایایی هستند که موتور سروو ما می تواند از آن ها حرکت کند. در نهایت، ما قرار است با استفاده از تابع "نوشتن" سرووی خود را بچرخانیم. قالب این است: ” servoVariableName.write(angleVariable); ".
مرحله 12: خواندن مختصات X برای حرکت چرخش موتورهای Dc
![](https://duino4projects.com/wp-content/uploads/2022/07/Reading-the-X-Coordinate-to-Move-Rotate-the-Dc-Motors.jpg)
مشابه کاری که قبلا انجام دادیم، از analogRead() برای بدست آوردن مختصات X جوی استیک و استفاده از این مقدار برای کنترل سرعت/RPM موتورهای DC خود استفاده خواهیم کرد. پس از این، مقدار متغیر موتور را به دست می آوریم، باید مقدار باینری این متغیر را بخوانیم و متن ارسال کنیم تا مقدار مناسب POWER برای RPM مورد نظر خود را تولید کنیم. ما این کار را با استفاده از “motorControl >>= 1 انجام خواهیم داد. کد ">>=1" محتوای باینری این مقدار را جابهجا میکند و همه آن را با 1 به سمت راست حرکت میدهد. هدف از این کار آزمایش هر بیت جداگانه در دادهها است. سپس یک پایه خروجی HIGH یا LOW (به ترتیب) را می کشد تا مطابقت داشته باشد.