خانه >> میکروکنترلرها >> آردوینو >> مولتی تسکینگ در آردوینو ( چند وظیفگی در آردوینو )

مولتی تسکینگ در آردوینو ( چند وظیفگی در آردوینو )

در آموزش مولتی تسکینگ در آردوینو یاد میگیریم که چگونه می توانیم مفهوم Arduino Multitasking را اجرا کنیم، چه عواملی باید برای Multitasking در Arduino در نظر بگیریم . با الکتروپای همراه باشید تا یک پروژه ساده مولتی تسکینگ را اجرا کنیم.

مختصری درباره مولتی تسکینگ

مولتی تسکینگ در آردوینو

در اصطلاح محاسباتی، چند وظیفه ای یعنی اجرای وظایف یا فرآیندهای متعدد توسط یک کامپیوتر در طی یک دوره زمانی . در واقع معنی وقفه interrupt در چند وظیفه ای یا مولتی تسکینگ قابل تصور است .وقفه یک فرایند است که به کامپیوتر میگوید یک کار متفاوت به سرویس او نیاز دارد.

حالتی را فرض کنید که در سیستم محاسباتی هیچ وقفه ای وجود ندارد. در این جا ، اگر یک کار جدید نیاز به سرویس کامپیوتر داشته باشد، باید منتظر بمانید تا کار فعلی توسط کامپوتر کامل اجرا شود. این کار عملی نیست زیرا کار جدید ممکن است بحرانی باشد و نیازمند توجه فوری. وقفه (interrupt) در اینجا نقش مهمی ایفا می کند. هنگامی که یک Task (وظیفه) کامپیوتر را متوقف میکند، Task فعلی را در حالت تعلیق قرار می دهد، کار جدید را انجام می دهد و به وظیفه اصلی بازگشت می کند.

مولتی تسکینگ در آردوینو

Arduino یک پلتفرم ساده مبتنی بر میکروکنترلر بدون مفهوم سیستم عامل است. این بدان معنی است که فقط یک برنامه می تواند در یک زمان در Arduino اجرا شود. اما جای نگرانی نیست 🙂 .

حتی اگر سیستم عامل وجود نداشته باشد، ما هنوز هم می توانیم به مفهوم مولتی تسکینگ در آردوینو  ، یعنی انجام وظایف متعدد در آردوینو دست یابیم. برای انجام وظایف متعدد در Arduino، باید از دو مفاهیم استفاده کنیم ،  Interrupts  و millis .

خلاص شدن از شر تابع delay 

وقتی ما از تابع delay استفاده میکنیم ، میکروکنترلر فقط مشغول اجرای این تابع می شود و کار دیگری نمیتواند انجام دهد . باز هم جای نگرانی نیست 🙂 چون تابع Millis به کمک ما میاد و ما رو از شر تابع delay نجات میده .

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

وقفه ها در آردوینو 

وقفه ها در آردوینو 

برد Arduino UNO از دو وقفه خارجی در پین 2 و 3 دیجیتال پشتیبانی می کند. با تحریک این پین های ورودی برد آردوینو ، می توانید وقفه های برد آردوینو Arduino رو به طور ناگهانی برای انجام یک کار خاص تحریک کنید.

چشمک زدن دو LED با آردوینو با سرعت های مختلف بدون استفاده از delay 

این کار با تابع millis امکان است. اگر از تابع delay برای چشمک زدن دو LED استفاده کنید، نمی توانید زمان های مختلف ON و OFF را برای LED ها به دست بیاورید و سپس با نرخ های مختلف به طور همزمان چشمک بزنید. برنامه زیر مثالی از چگونگی دستیابی به عملکرد فوق را نشان میدهد.

 

مثال مولتی تسکینگ در آردوینو 

اجازه دهید یک کد ساده Multitasking Arduino را نشان بدهیم. برای این کار، از مثال قبلی و کدهای بالا به عنوان یک مرجع استفاده میکنیم . من از کدهای بالا استفاده می کنم و برای رسیدن به مولتی تسکینگ در Arduino کدها رو توسعه میدیم .

در مثال بالا دو LED با سرعت های مختلف به طور همزمان  چشمک می زدند. در ادامه  یک کار جدید را اضافه می کنیم که در آن با هر بار فشار دادن یک دکمه ، یک  LED جدید وصل شده به یکی دیگر از پین های آردوینو بدون تاثیر در چشمک زدن دو LED قبلی بلافاصله روشن شود.

شماتیک مدار مولتی تسکینگ در آردوینو 

مدار آموزش مولتی تسکینگ در آردوینو

 

این مدار یک نمایش ساده از چند وظیفه ای در Arduino است و شامل یک مدار پیچیده نیست. سه LED (ترجیحا از سه رنگ مختلف) به پین 8، 9 و 10 آردوینو از طریق مقاومت های محدود کننده جریان متصل می شوند و کلید فشاری به پین شماره 2 آردوینو متصل شده است (مهم است که آن را به این پین وصل کنید).

آموزش مولتی تسکینگ در آردوینو

 

کدهای برنامه مولتی تسکینگ

طرز کار مدار و برنامه 

هنگامی که آردوینو شروع به اجرای برنامه می کند (پس از آپلود آن)، فقط LED های متصل به پین ها 8 و 9 طبق زمان تعیین شده برای هر یک به ترتیب  ON و OFF میشوند  .

هرگاه کلید متصل به پایه وقفه آردوینو یعنی پایه 2 فشرده شود یک وقفه تولید میکند و وضعیت LED متصل به پایه 10 تغییر میکند .

نتیجه 

برنامه و مدار توضیح داده شده در اینجا یک نمونه ساده از اجرای چند وظیفه ای در Arduino است. شما می توانید پروژه های پیچیده ای را با استفاده از قطعات مختلف مانند موتور، LED، servos، و غیره انجام دهید و از وقفه برای دستیابی به چند وظیفه ای استفاده کنید.

 

مولتی تسکینگ در آردوینو ( چند وظیفگی در آردوینو )
4.1 (82%) 10 votes

درباره ی هادی ندائی

Hadi Nedaee
هادی ندائی

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

سیزده − 13 =

Website Security Test