تابع های سفارشی را در بخش دوم از سری آموزش های مقدماتی آردوینو Arduino بررسی کردیم. اما اگر فقط و فقط یک پروژه با تابع های سفارشی ایجاد بنویسید، متوجه تغییرات در کد برنامه مانند سهولت در اجرا بدون هنگ کردن، کاهش تعداد خط های برنامه و کاهش حجم حافظه اشغالی خواهید شد. در این آموزش یک پروژه با استفاده از تابع های سفارشی Custom Function در آردوینو اجرا خواهیم کرد. در ادامه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
تعریف پروژه شدت نور با تابع سفارشی
در این پروژه میخواهیم شدت نور چندین لامپ ال ای دی LED را توسط یک پتانسیومتر کنترل کنیم. این روند در کدنویسی توسط PWM مدولاسیون پهنای باند انجام میشود. اما اینبار میخواهیم با تابع های سفارشی کد حرفه ای تر و منظم تری بنویسیم تا با روش های جدید کدنویسی در آردوینو آشنا شویم.
استفاده از آرایه در آردوینو
اگر تعداد داده ها زیاد باشد، چه اتفاقی میفتد؟ تا چه زمانی مجاز به استفاده از متغیرها هستیم؟ اگر تعداد داده ها زیاد باشد، بهترین روش برای ساده نویسی کد آردوینو استفاده از آرایه ها و رشته ها است.آرایه ها همنوع هستند و هر آرایه دارای اسم مشخصی است که دقیقا مشابه متغیرها نامگذاری میشوند. آرایه تک بعدی و یا لیست به صورت زیر در برنامه تعریف میشود. از آرایه برای منظم شدن برنامه و تعداد ورودی و خروجی ها در زمانیکه تعداد آن ها افزایش میباید، استفاده میکنیم. متغیرها در برنامه نویسی به صورت آرگومان تعریف میشوند که آرایه ها هم بدین صورت به عنوان آرگومان به توابع ارسال میشوند. برای ارسال آرایه به تابع؛ نام تابع به عنوان آرگومان فراخونی میشود.
- نوع آرایه یکی از انواع داده در C++ است.
- نام آرایه برای دسترسی به آرایه استفاده میشود.
- طول آرایه با یک عدد صحیح مثبت مشخص میشود.
- اندیس آرایه از صفر شروع میشود.
در این پروژه سه عدد لامپ ال ای دی در خروجی داریم که توسط آرایه آن ها را کد برنامه معرفی میکنیم.
استفاده از تابع سفارشی
دو بخش اصلی که تا به حال به آن پرداخته شده است، فقط از دو تابع اصلی است. در برنامه های طولانی و پیچیده که شامل چندین بخش منطقی و مستقل از هم هستند، بهتر است برای هر قسمت منطقی برنامه ای جداگانه نوشته شود. برای نوشتن تابع باید اهداف تابع مشخص باشد. چه وظیفه ای بر عهده دارد، .ورودی و خروجی ها مشخص باشد. بخش های اصلی برنامه به صورت زیر است.
- a return type
- a name
- a list of parameters
نوع تابع یکی از روش های برنامه نویسی ++c است که توسط ما تعریف میشود. اگر تابعی بخواهد مقداری را به تابع فراخوان برگرداند، آن مقدار در نام تابع قرار میگیرد. هر مقدار دارای نوع است و نام تابع هم بابد دارای نوع باشد. اگر تابع هیچ مقداری را به برنامه فراخوان برنگرداند، نوع آن VOID خواهد بود. هر تسک TASK میتواند یک اسم منحصر به فرد برای تابع خود داشته باشد. به این ترتیب تسک های مختف در برنامه هرکدام وظیفه خود را انجام داده و سپس در LOOP برنامه تعریف میشوند.
ایجاد یک تابع سفارشی برای خروجی ها
در قدم اول برای تعداد خروجی های تعریف شده در پروژه یک تایع سفارشی ایجاد میکنیم. برای اینکار از آرایه ARRAY و تابع سفارشی سازی شده CUSTOM FINCTION استفاده میکنیم. در نظر داشته باشید بایستی خروجی های برنامه را مشخص کنید.
#define LED1 3 #define LED2 5 #define LED3 6 #define LEDS 3 #define pot A5
برای معرفی خروجی ها یک آرایه مینویسیم:
byte ledarray[LEDS]={LED1, LED2, LED3};
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
اتصالات بردهای آردوینو
برای اتصال ال ای دی ها بایستی از پایه های pwm بر روی برد Arduino استفاده کنید. در تصویر زیر روش اتصال ال ای دی به هر یک از پایه های PWM نمایش داده شده است. به دلخواه سه ال ای دی به یکی از پایه های PWM متصل اتصال دهید و حتما با پایه های تعریف شده در کد تطبیق دهید.
برای ورودی از یک ولوم پتانسیومتر استفاده کنید که ولوم آنالوگ است و به یکی از پایه های A0 – A5 در برد آردوینو متصل میشود.
به همین ترتیب اتصالات را مطابق با پایه های نوشته شده در کد انجام دهید.
روش اجرا
پس از آپلود کد برنامه و اجرای اتصالات، پتانسیومتر یا همان ولوم را بچرخانید. هر سه ال ای دی با تغییر شافت ولوم شدت نور آن ها کم و یا زیاد میشود که این تغییر وابسته به جهت چرخش شافت ورودی ولوم است. اگر پایه سمت راست ولوم به ۵ ولت متصل باشد، با چرخاندن شافت در جهت راست، شدت نور ال ای دی ها افزایش مییابد و اگر شافت ولوم را در جهت چپ بچرخانید که به GND متصل است، شدت نور ال ای دی ها کاهش مییابد.
وسایل مورد نیاز
جمع بندی لیدی پای
تابع سفارشی کدها را منظم کرده و سپس مانع از ایجاد نویز و هنگی در پروژه ها میشود. تصور کنید کدی که نوشته اید، از چندین تسک مختلف تشکیل شده است. اگر بخواهیم تمامی تسک ها را در lOOP اصلی برنامه بنویسیم، یک کد شلوغ با احتمال اشتباه زیاد و هنگ کردن برنامه در انتظارمان خواهد بود. اما تابع سفارشی کد را منسجم کرده و سپس یک کد تمیز با شخصی سازی شده برای هر تسک در اختیار ما قرار میدهد.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
سلام خانم پوربلورچیان
تشکر از این آموزش جامعتون، بخش های قبلی را هم خواندهام. این بخش هم عالی بود.
موفق باشید.
با سلام
سپاس از همراهی شما کاربر گرامی امیدوارم مفید واقع شده باشد.
ممنونم خانم مهندس
نکته ای که در هیچ منبعی بهش اشاره نشده
استفاده کردیم.
با سلام
کاربر گرامی سپاس از همراهی شما