AVR, آردوینو arduino, پروژه آردوینو, توصیه شده

multitasking در آردوینو- کتابخانه Metro – قسمت اول

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

معرفی و تشریح قابلیت‌های کتابخانه Metro در آردوینو 

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

شما لازم است در برنامه‌نویسی میکرو خود همزمان وضعیت چشمک زدن چند LED را مدیریت کنید، LCD را رفرش نمایید، منتظر اطلاعات سریال باشید و به ازای آن حتی یک صوت پخش کنید و حتی منتظر وضعیت میکروسویچ از نظر کاربر باشید! وظایفی که لازم است بصورت همزمان مدیریت شود.

امکان استفاده از چندین تسک مجزا باعث شده است کد نویسی و استفاده از این میکروها بسیار راحت و سریع‌تر گردد.

در پست های قبلی سعی شد در مورد نصب سیستم‌عامل RTOS بر روی بردهای آردوینو توضیحات کاملی داده شود ولی در پست زیر سعی میکنیم یک لایبرری جالب و بسیار سبک جهت برخی کارهای خاص و ویژه را به شما معرفی کنیم که مطمئناً از آن لذت خواهید برد.

 

لایبرری METRO چیست؟

Metro طبق توضیحات داده شده در وب سایت آردینو یک لایبرری سبک و مفید است که می‌تواند جهت رویدادهای تکرار‌پذیر در آردوینو، کاربردی ساده و فوق العاده در زمان‌بندی های آن داشته باشد. برای نمونه:

  • چشمک زدن همزمان LED
  • هماهنگی همزمان سروو موتورها
  • ارتباطات همزمان سریال

 نصب و راه‌اندازی METRO:

حتماً با محیط نرم افزار آردوینو و گیت هاب آشنا هستید! گیت هاب همچون ناسا سایتی است که هزاران نفر سورس‌های متن باز و شخصی خود را در آن میگذارند.

همان‌طور که در بالا گفتیم قرار است لایبرری Metro  که در این وب سایت قرار گرفته را دانلود نماییم و به آردینو اضافه کنیم.

 

دانلود کتابخانه Metro:

جهت دانلود اینجا را کلیک کنید.

پس از دریافت این فایل وارد نرم افزار آردوینو شده و در منو مسیر زیر را دنبال کنید:

نحوه اضافه کردن لایبرری به آردوینو

 

سپس فایل زیپ را انتخاب کنید:

 

multitasking در آردوینو

 

 

کتابخانه Metro:

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

فرض کنید شما قرار است سه LED را با زمان‌بندی یکسان خاموش و روشن نمایید. کد زیر به‌راحتی به شما این اجازه را خواهد داد.

شما می‌توانید با تابع delay این کار را انجام دهید.

حال فرض کنید قرار است LEDها زمان‌بندی متفاوتی در چشمک زدن داشته باشند. وقتی شما به LED1 فرمان روشن شدن میدهید و میگویید یک ثانبه صبر کن، آن وقت نمی‌توانید همزمان به LED2  بگویید 200 میلی ثانیه منتظر بمان! یا بهتر بگم خیلی پیچیده میشه!

زمان‌بندی و به‌خصوص زمان‌بندی‌های تکرارپذیر، بارها و بارها در برنامه‌نویسی میکروکنترلرها استفاده می‌شود و یکی از راهکارها استفاده از اینتراپت و تایمرها است.

ولی با استفاده از کتاب‌خانه METRO این قضیه به راحتی می‌تواند سمت آردوینو اتفاق بیفتد.

با وارد کردن کتابخانه Metro و در نهایت وارد کردن کلاس Metro به صورت کلاس Instance، شما شی‌های مورد‌نظر خود را تعریف می‌کنید و به آن شی‌ها مقدار اولیه می‌دهید. ( مثال زیر)

حقیقت را عوض نکرده‌اید! شما هنوز هم دارید از حالت تک پردازشی استفاده می‌کنید. چون اگر دقت کنید همه چیز منظم و پشت سر هم اجرا می شود و اگر دیده باشید با کمی فاصله موارد Part 1 و هم‌چنین موارد Part 2 از هم اجرا می شوند. انگار در حال دستور دادن خیلی سریع و پشت هم در کامند لاین باشید.

در Metro ما با مقداردهی و تعریف کردن یک فیلد (بر حسب میلی ثانیه) از جنس این کتابخانه میتوانیم آن را در قالب Condition تعریف نماییم و در این صورت این شرط‌ها بدون هیچ تداخلی از هم عبور کرده و ProtoThreading اتفاق می افتد که در قسمت آینده بیشتر به آن خواهم پرداخت.

مثال:

 

در قسمت بعد سعی خواهیم کرد شما را با ذکر مثال‌هایی بیشتر و کاربردی تر از کتابخانه Metro و انواع Threading آشنا کنیم.

 



انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.  همکاری با سیسوگ

 

یک دیدگاه در “7”

  1. Avatar رضا گفت:

    سلام
    امکانش هست از این کتابخانه بر ای nodemcu 12E استفاده کرد یا حتما باید برد اردوینو هم کنار nodemcu کنار برد اردوینو باشه؟
    من داخل پروژم فقط برد nodeMcu دارم آیا میتونم این کار را انجام بدم .؟

    1. زئوس Zeus زئوس Zeus گفت:

      بله فکر میکنم مشکلی وجود نداشته باشه.

  2. Avatar سید محمد حسن گفت:

    سلامی به گرمی افتاب به شما که به من علم می اموزید
    از نحوه تدریستون خیلی خوشم اومد امیدوارم در هر زمینه ای موفق باشید
    منتظر ادامه اموزش مترو هستم
    متشکر

    1. زئوس Zeus زئوس Zeus گفت:

      متشکر از همراهی شما دوست عزیز

  3. Avatar امیر گفت:

    خیلی خوب بود
    عالییییییییییییی…

    1. Sisoog Os Sisoog Os گفت:

      متشکرم از حسن توجه شما

    2. Pouria Rezaee Pouria Rezaee گفت:

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

پاسخی بگذارید

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