در آموزش پیشین، یک موتور الکتریکی DC را به کمک برد آردوینو UNO، از طریق ماژول SIM808 به اینترنت متصل کردیم. سپس با طراحی وب سایت(پلتفرم IOT)، توانستیم علاوه بر کنترل دور و جهت موتور، به کمک GPS ماژول SIM808، به صورت لحظه ای بر روی سرور موقعیت آن را ردیابی نماییم. در این آموزش که در دو مرحله منتشر می شود، قصد داریم با طراحی یک برنامه تحت ویندوز، کنترل موتور آرمیچر DC را با کنترل دور و جهت آن را به دست بگیریم. در قسمت اول، به طراحی برنامه گرافیکی تحت ویندوز به کمک زبان برنامه نویسی C# و تحت محیط Visual Studio پرداخته و در قسمت دوم، به طراحی مدار و برنامه نویسی برد آردویینو خواهیم پرداخت، در این پروژه، برد آردویینو به رایانه متصل شده و از طریق پورت سریال آن، برنامه می تواند به آردویینو داده ارسال نماید و آردویینو با دریافت داده ها، فرمان مناسب را اجرا نماید. در ادامه با مرجع تخصصی آردوینو به زیان فارسی دیجی اسپارک همراه باشید.
لینک اجرای این پروژه در لایو اینستاگرام
آشنایی با زبان #C
زبان #C، یک زبان برنامه نویسی بوده که توسط مایکروسافت توسعه داده شده و در کنار ابزاری دیگر تحت عنوان NET Framework.، می توان برنامه هایی با فرم های گرافیکی ویندوزی، به اجرا درآورد. به کمک این دو ابزار که تحت محیط یکپارچه برنامه نویسی (IDE) ویژوال استودیو عرضه می شوند، بدون دغدغه از بابت طراحی UI، می توان برنامه های ویندوزی را در فرم های گرافیکی مختلف توسعه داد. زبان برنامه نویسی #C دستوراتی بسیار شبیه به ++C داشته و کار با آن برای کاربران آردویینو نیز ساده است. به کمک این زبان می توان از طریق پورت سریال، با آردویینو به تبادل داده پرداخت.
ایجاد پروژه #C در محیط ویژوال استودیو
پس از نصب و راه اندازی ویژوال استودیو، مرحله ایجاد پروژه، فرم گرافیکی و برنامه نویسی آن می رسد. پس از اجرای نرم افزار(نسخه مورد استفاده در این آموزش ۲۰۱۲ است)، به قسمت file رفته و در ادامه new project را انتخاب نمایید، سپس در پنجره ظاهر شده، ابتدا در سمت چپ گزینه # visual c و در وسط صفحه، مطابق کادر قرمز رنگ، windows Form Application را انتخاب نمایید:
پس از این مرحله، یک فرم خالی در صفحه ایجاد خواهد شد. در این پروژه، ما به کمک دو دکمه، یکی برای چپ گرد و دیگری برای راست و یک ولوم برای میزان دور، وضعیت موتور خود را کنترل خواهیم کرد.
قرار دادن کلید و ولوم در برنامه #C
برای کنترل دور موتور و جهت چرخش موتور آرمیچر DC بایستی رابط گرافیکی ایجاد کنیم. برای این منظور در نرم افزار ویژوال استودیو طبق توضیحات زیر اقدام میکنیم. در این قسمت، می بایست دکمه و ولوم را بر روی فرم (برنامه) خود قرار دهیم. بنابراین، روی منوی view کلید کرده و سپس گزینه toolbox را انتخاب نمایید.
پس از باز شدن منوی toolbox با انواع ابزارهای مختلف رو به رو خواهید شد. به عنوان نمونه می توان به بعضی از پرکاربردترین این ابزارها اشاره نمود. label: قرار دادن متن بر روی فرم، button: قرار دادن کلید بر روی فرم که با فشردن آن توسط کاربر، کد قرار گرفته در متد(تابع) آن کلید اجرا خواهد شد. textbox : دریافت متن از کاربر و comboxbox: منوهای بازشو با چندین آپشن
پس از باز شدن منوی toolbox، می بایست ابزارهای مورد نیاز خود را انتخاب نماییم. برای این پروژه، نیاز به دو کلید برای جهت های راست گرد و چپ گرد و یک ولوم برای تنظیم دور موتور خواهیم داشت. بنابراین، ابتدا برای دکمه، گزینه button را از منوی toolbox انتخاب نمایید، چنانچه این گزینه را نیافتید، با تایپ عبارت button در منوی جستجو این گزینه، آن را یافته و دوبار بر روی آن کلیک کنید، حال این دکمه بر روی فرم قرار گرفته و میتوانید با کلیک بر روی آن و با تغییر موقعیت موس، مکان آن را بر روی فرم ، تعیین نمایید، سپس این کار را یکبار دیگر انجام داده و دکمه دوم را در فرم قرار دهید. برای درج ولوم در فرم باید به دنبال عبارت trackbar بگردیم. با جستجوی این عبارت در منوی toolbox، با تصویر زیر رو به رو می شویم، این گزینه را انتخاب کرده و بر روی فرم خود قرار دهید.
پس از قرار گرفتن ولوم و کلیدها بر روی فرم، بر روی هریک دوبار کلیک کنید تا کد آن تولید شود، همچنین، موقعیت موس را بر روی فرم بگونه ای تغییر دهید که کلیک آن بر روی هیچ کدام از دکمه ها و ولوم نباشد، سپس بر روی فرم دوبار کلیلک نمایید تا تابع اجرای فرم(form load) نیز ساخته شود. برای بازگشت به قسمت طراحی گرافیکی، بالای فرم کافیست بر روی عبارت [Design] کلیک نمایید. پس از قرار گرفتن کلیدها، میتوانید متن آن را از button1 یا button2، تغییر دهید، بنابراین با یک بار کلیک بر روی دکمه، منوی properties آن در سمت راست صفحه ظاهر می شود، در این منو، به دنبال عبارت text باشید و متن آن را به دلخواه و حتی به زبان فارسی، تغییر دهید.
کد #C کنترل موتور آرمیچر در ویندوز
در این قسمت، کدهای پروژه کنترل موتور آرمیچر DC را مشاهده می نمایید. از آنجاییکه ممکن است نام کلیدها و ولوم انتخابی من با شما متفاوت باشد، پیشنهاد می شود کدها را به تفکیک هر متد(تابع) کپی کرده و در تابع خود قرار دهید، به عنوان نمونه ابتدا کدهای button1 را کپی و در button1 خود قرار دهید، سپس با همین روش به سراغ کلید بعدی، ولوم و فرم بروید.
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
پس از ذخیره کدها، از منوی بالای ویژوال استودیو، دکمه start را بزنید تا برنامه اجرا و فرم زیر ظاهر گردد.
در زیر لینک دانلود نرم افزار قرار گرفته است، توجه داشته باشید که پیش از اجرای نرم افزار و ارسال فرمان موتور، حتما آردویینو به پورت USB متصل شده باشد. دانلود نرم افزار ارسال فرمان به موتور از طریق کامپیوتر تحت ویندوز
تحلیل کدهای پروژه
در ابتدای این پروژه، عبارات using را می توان معادل کتابخانه در آردویینو در نظر گرفت، البته #C به طور خودکار آن ها را درون برنامه قرار می دهد. همانطور که اطلاع دارید، با اتصال برد آردویینو به رایانه، یک پورت به آن اختصاص داده می شود، نرم افزار آردویینو نیز از طریق همین پورت به برد آردویینو داده ارسال می نماید، همچنین در #c به کمک کلاس SerialPort، می توانیم یک پورت سریال ایجاد نموده و با تعیین نرخ انتقال داده، مثلا ۱۱۵۲۰۰ در پروژه، با پورت سریال ارتباط برقرار نماییم، برای اینکار، ابتدا یک نمونه از این کلاس به صورت زیر می سازیم:
SerialPort mySerialPort = new SerialPort(serial_port);
پس از این مورد، میتوانیم نرخ انتقال و سایر تنطیمات پورت را ایجاد نماییم. همچنین این تابع نام پورت سریال را به عنوان ورودی دریافت می نماید. برای لیست پورت های سریال در دسترس، از تابع GetPortNames() به شکل زیر استفاده می نماییم:
string[] ports_name = SerialPort.GetPortNames();//دریافت نام پورت های سریال در دسترس foreach (string port in ports_name) { if (port != "") serial_port = port;//قرار دادن نام پورت دردسترس به عنوان پورتی که قرار است ارتباط را برقرار کند }
در ابتدای برنامه متغیر رشته ای به نام serial_port را به صورت عمومی تعریف نمودیم تا با مقدار دهی آن در این قسمت، دکمه ها و ولوم به هنگام برقراری ارتباط با پورت سریال، از آن استفاده نمایند. همچنین برای اجرای برنامه و ارتباط دهی با آردویینو، در نظر داشته باشید که هنگام اتصال آردویینو به نرم افزار، هیچ مبدل سریال دیگری به رایانه متصل نباشد. در ادامه برای ارسال داده نیز از تابع Writeline به صورت زیر استفاده می نماییم:
mySerialPort.WriteLine("L!");
برای ارسال داده به آردویینو از طریق پورت سریال، برای فرمان چپ گرد، راست گرد و دور موتور، فرمت ارسالی داده را به صورت زیر تعیین نمودیم:
چپ گرد: !L
راست گرد: !R
دور موتور: !عدد ولوم
با توجه به فرمت فوق، در انتهای هر فرمان ارسالی یک علامت ! قرار گرفته تا در آردویینو حین خواندن فرمان، انتهای پیام مشخص باشد، همچنین، با حرکت دادن ولوم، یک عدد بین ۰ تا ۱۰ در value آن قرار می گیرد که می توانیم با تبدیل این مقدار به رشته، آن را به صورت زیر در یک متغیر ذخیره نماییم:
String data; data = trackBar1.Value.ToString();
در نهایت پس از اتمام کار، می بایست اتصال خود با پورت سریال را به شکل زیر قطع نماییم:
myserial.Close()
وسایل مورد نیاز
جمع بندی
در این آموزش که شامل دو بخش می شود، به ارسال فرمان چپ گرد، راست گرد و کنترل دور موتور از طریق ویندوز و به کمک زبان برنامه نویسی #C پرداختیم، در قسمت اول به معرفی محیط ویژوال استودیو و زبان #C پرداختیم و در ادامه نحوه طراحی یک فرم گرافیکی و قرار دادن دکمه ها و ولوم کنترلی دور موتور مورد بررسی قرار دادیم. سپس به برنامه نویسی هر کلید و چگونگی برقراری ارتباط سریال بین آردویینو و نرم افزار طراحی شده پرداختیم. در قسمت بعدی این آموزش، به طراحی مدار و برنامه نویسی برد آردویینو می پردازیم و در نهایت با اجرای برنامه، به موتور از طریق پورت سریال، فرمان خواهیم داد.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
سلام
میشه از ویژوال استودیو کد استفاده کرد
سلام
متوجه منظور شما نشدم!
بجای استفاده از برنامه ویژوال استودیو از برنامه VS code استفاده کنم
در این مورد اطلاعی ندارم، اما چون برنامه دارای فرم های گرافیکی است و با .net طراحی شده، فکر نمیکنم ممکن باشد.
باید خیلی کد نویسی کرد
سلام
منظور شما را متوجه نشدم
لطفا واضح تر توضیح دهید
سلام من میخوام این برنامه برای کنترل پهپادم باشه د دستور را به رادیو کنترل بفرسته و هر حرکت راویو در در برنامه مشخص باشه امکانش هست
سلام
بله شدنی است
اما نیاز به دانش برنامه نویسی، برق و ایجاد تغییرات در رادیو کنترل دارد.
سلام اقا صابری لطفا شماره واتساپ را برا م ارسال کنید ممنون می شم
سلام
در صورتیکه راجع به هر مطبا سوالی دارید، در انتهای آن به صورت کامنت مورد را بپرسید. چنانچه درخواست مشاوره، راهنمایی و… دارید، به شیوه زیر عمل کنید:
برای این منظور، ابتدا به وب سایت دانشجو کیت به آدرس زیر، مراجعه نمایید:
وب سایت دانشجوکیت-کلیک کنید
در این وب سایت، بر روی گزینه پرتال پشتیبانی کلیک نمایید. در ادامه، در منوی ظاهر شده، بر روی گزینه راهنمایی و مشاوره قبل ازخرید محصولات کلیک نمایید. در این قسمت، بخش تیکت را دپارتمان پشتیبانی و در منوی پایین آن، روی خدمات فنی ویژه کلیک نمایید. در ادامه، عنوان و متن درخواست خود را نوشته و بر روی گزینه ارسال، کلیک کنید. پس از دریافت درخواست شما، مورد بررسی خواهد شد.