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

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

multitasking در آردوینو- کتابخانه Metro - قسمت اول
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 آشنا کنیم.

 

حمایت از Pouria Rezaee

خوشحال میشیم برای تداوم و کیفیت ما رو حمایت کنید.

0 نفر

پــــســنــدیـده انـد

توجه

دیدگاه ها

8 دیدگاه

  • یونس
    ۱۲ شهریور ۱۴۰۰

    عالی بود. من فکر میکردم که اردوینو قابلیت اجرای چند برنامه همزمان را نداره. ولی خب با روشهایی مث همین کتابخانه ای که به خوبی توضیح دادید میشه یه جورایی چند کار همزمان را انجام داد.

  • رضا
    ۱۱ بهمن ۱۳۹۶

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

    • Zeus ‌
      زئوس Zeus
      ۲۶ اسفند ۱۳۹۶

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

  • سید محمد حسن
    ۲۷ دی ۱۳۹۶

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

    • Zeus ‌
      زئوس Zeus
      ۲۴ اسفند ۱۳۹۶

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

  • امیر
    ۱۸ تیر ۱۳۹۶

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

    • Sisoog Os
      Sisoog Os
      ۱۹ تیر ۱۳۹۶

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

    • Pouria Rezaee
      Pouria Rezaee
      ۱۹ تیر ۱۳۹۶

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

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه اول سیسوگ (مسابقه اول: درک سخت افزار) انتقادهای زیادی رو در پی داشت تا جایی که حتی خودمم به نتیجه مسابقه...

Zeus ‌ Zeus ‌
  • 2 سال پیش

راه اندازی LCD گرافیکی Nokia 1661 و دانلود کتابخانه آن

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش

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

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش

همه چیز درباره ریموت کنترل‌های هاپینگ

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

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 9 ماه پیش

آموزش قدم به قدم راه اندازی +NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش

ساخت ماینر با FPGA و ARM

چند ماهی هست که تب بیت کوین و ارزهای دیجیتال خیلی بالا رفته! چه شد که این پست را نوشتم همانطور که...

Zeus ‌ Zeus ‌
  • 3 سال پیش

مسابقه چهارم: کدام حلقه سریع‌تر است؟

حدود ۷ ماه پیش، مسابقه سوم سیسوگ رو برگزار کردیم و کلی نکته در مورد خواندن رشته‌های ورودی را بررسی کردیم. فکر...

Zeus ‌ Zeus ‌
  • 1 سال پیش

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

در قسمت اول به یکسری اطلاعات کلی ماژول mc60 پرداختیم، با نرم افزار QNavigator کار کردیم و یک هدربرد هم برای کار...

Mahdi.h   Mahdi.h  
  • 2 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک