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

blog
۱۳۹۶-۰۴-۱۸
3 دقیقه

معرفی و تشریح قابلیت‌های کتابخانه 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 آشنا کنیم.

 

اطلاعات
8
0
لینک و اشتراک
profile

Pouria Rezaee

متخصص الکترونیک

مقالات بیشتر
slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد. جستجو در آیسی
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
خانواده سیسوگ

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند.
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد.
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند.
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند.
family

دیدگاه ها

profile
یونس گفت :
۱۴۰۰-۰۶-۱۲ ۱۳:۰۶

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

profile
رضا گفت :
۱۳۹۶-۱۱-۱۱ ۱۴:۴۸

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

profile
زئوس Zeus گفت :
۱۳۹۶-۱۲-۲۶ ۱۳:۳۳

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

profile
سید محمد حسن گفت :
۱۳۹۶-۱۰-۲۷ ۱۸:۴۷

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

profile
زئوس Zeus گفت :
۱۳۹۶-۱۲-۲۴ ۱۲:۴۳

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

profile
امیر گفت :
۱۳۹۶-۰۴-۱۸ ۱۲:۱۰

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

profile
Pouria Rezaee گفت :
۱۳۹۶-۰۴-۱۹ ۲۲:۴۲

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

profile
Sisoog Os گفت :
۱۳۹۶-۰۴-۱۹ ۱۱:۰۴

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

become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله