تحلیل کتابخانه

تحلیل و بررسی کتابخانه MillisTimer

millistimer-h-arduino-library-digispark
نوشته شده توسط معین صابری

در سلسله آموزش های تحلیل و بررسی کتابخانه های آردوینو، این قسمت به یکی از کتابخانه های مهم و کاربردی در زمینه زمانبندی می پردازیم. کتابخانه MillisTimer یک کتابخانه بر پایه تابع millis بوده و فرایند زمانبندی را بسیار تسهیل می کند. در این کتابخانه توابعی تعبیه شده که امکانات بسیاری را برای کاربر فراهم می سازد. در این آموزش به تحلیل و بررسی کتابخانه MillisTimer می پردازیم. مطابق رویه کتابخانه ها، در ابتدا به نصب و بررسی الزامات فنی می پردازیم. سپس به معرفی توابع کلیدی پرداخته و در نهایت با ارائه مثالی از کاربرد، نحوه استفاده از توابع را در مثالی عملی، خواهیم دید. در ادامه، با مرجع تخصصی رزبری پای و آردوینو به زبان فارسی، دیجی اسپارک، همراه باشید.

 


نصب کتابخانه MillisTimer


به منظور استفاده از کتابخانه MillisTimer، ابتدا می بایست آن را نصب کنیم. در این قسمت به نصب کتابخانه سنسور شتاب سنج با جستجو در مخازن آردوینو می پردازیم. به همین منظور، ابتدا در نرم افزار آردوینو بر روی گزینه Tools و سپس Manage Libraries را کلیک کنید. پس از کلیک بر روی این گزینه، با تصویر زیر رو به می شوید. این منو کتابخانه های در دسترس را به شما نشان می دهد. شما نیز می توانید با جستجوی نام کتابخانه مورد نظر خود، آن را در مخازن آردوینو یافته و سپس نصب کنید.

Analysis of DFPlayerMini.h library - دیجی اسپارک

 

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

 


الزامات و نکات فنی در راه اندازی کتابخانه MillisTimer


پس از بررسی نحوه نصب کتابخانه، نوبت به بررسی الزامات فنی کتابخانه MillisTimer می رسد. در ابتدا توجه داشته باشید که این کتابخانه بر پایه تابع millis بنا شده و مستقل از برد و میکروکنترلر است. به عبارت دیگر شما از این کتابخانه روی کلیه بردهای مبتنی بر آردوینو که از تابع miliis پشتیبانی می کنند؛ می توانید استفاده کنید. به عنوان مثال این کتابخانه روی برد های آردوینو uno و ماژول های ESP8266 قابل اجراست. برای اطلاعات بیشتر در زمینه تابع millis، روی این لینک کلیک کنید.

 


توابع کلیدی و کاربردی کتابخانه MillisTimer


پس از بررسی نصب و الزامات فنی، نوبت به توابع کلیدی و کاربردی می رسد. این توابع در جدول زیر لیست می شوند. مطابق رویه معمول تحلیل کتابخانه ها، ورودی ها از چپ به راست تحت عنوان ورودی اول، ورودی دوم و…. نام گذاری می شوند. در رابطه با این کتابخانه، عملکرد به صورت interval بوده و تابعی که توسط شما تعیین می شود، با سر رسید زمان، اجرا خواهد شد. به عنوان مثال با تعیین interval روی ۱۰۰۰ میلی ثانیه، تابع تعیین شده هر ۱ ثانیه یکبار اجرا خواهد شد.

 

شرح ورودی نام تابع
این تابع، تابع سازنده کلاس کتابخانه است. ورودی از نوع بدون علامت ۳۲ بیتی MillisTimer(uint32_t interval = 0)
در ورودی این تابع، نام یک تابع قرار می گیرد. تابعی که در ورودی قرار می گیرد، زمانی که تایمر سرریز کند، اجرا خواهد شد. در حقیقت شما زمان را تعیین می کنید که هر چند ثانیه یکبار، یک تابع اجرا شود. ورودی از نوع کلاس MillisTimerجهت تعیین تابع سرریز void expiredHandler(timerEventHandler handler)
به کمک این تابع زمان را تعیین می کنید. به عنوان مثال با قرار دادن عدد ۱۰۰۰ در ورودی، هر یک ثانیه یکبار تابعی که در مرحله قبل تعیین کرده اید، اجرا می شود. ورودی از نوع بدون علامت ۳۲ بیتی void setInterval(uint32_t interval)
به کمک این تابع می توانید تعداد دفعاتی که interval اجرا می شود را تعیین کنید. این تعداد دفعات در ورودی تابع تعیین می شود. ورودی از نوع بدون علامت ۳۲ بیتی   void setRepeats(uint32_t repeat)
به کمک این تابع می توان از مدت زمان باقی مانده تا زمان سر ریز آگاه شد. این زمان در خروجی تابع قرار می گیرد. بدون ورودی     uint32_t getRemainingTime()
به کمک این تابع می توان تشخیص داد که آیا تایمر در حال اجراست یا خیر. در صورتیکه خروجی true شود یعنی تایمر در حال اجراست و اگر false شود یعنی تایمر متوقف است. بدون ورودی bool isRunning()
به کمک این تابع، تایمر متوقف می شود. بدون ورودی void stop()
به کمک این تابع، تایمر فعال می شود. بدون ورودی void start()
به کمک این تابع تایمر ریست می شود. بدون ورودی void reset()
این تابع تایمر را راه اندازی کرده و شروع به شمارش می کند. بدون ورودی void run();

 

 پس از بررسی توابع کلیدی و کاربردی، نوبت به اجرای یک برنامه می رسد. قسمت بعدی مربوط به این موضوع است.

 


اجرای یک نمونه برنامه


پس از بررسی توابع کلیدی نوبت به اجرای یک نمونه برنامه می رسد. در این برنامه یک تابع هر یک ثانیه یکبار و برای ۵ مرتبه، عبارت salam را در خروجی چاپ می کند.

#include "MillisTimer.h"//اضافه نمودن کتابخانه
MillisTimer timer1 = MillisTimer(1000); // زمان interval هر یک ثانیه یکبار تعیین شد.

// تابع زیر همان تابعی است که د رهنگام سر ریز تایمر، اجرا خواهد شد.
void myTimerFunction(MillisTimer &mt)
{
  
  Serial.println("salam");
}


void setup()
{
  Serial.begin(9600);
   
  timer1.setInterval(1000);  //تنظیم مدت زمان interval
  timer1.expiredHandler(myTimerFunction);  //تعیین تابع اجرایی در هنگام سر ریز
  timer1.setRepeats(5);  //تعیین تعداد دفعالت تکرار
  timer1.start();  //شروع به کار تایمر
}


void loop()
{
  timer1.run();  //راه اندازی تایمر

  if (!timer1.isRunning()) //اگر تایمر متوقف شده(تعداد دفعالت تکرار تمام شده)
  {
    Serial.println("Timer finished!");
    for (;;);   //برنامه متوقف شود.
  }
  
  delay(10);
}

 


لوازم متناسب با کتابخانه


انواع برد آردوینو

انواع برد ESP

 


جمع بندی


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

 

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

 

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

معین صابری

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

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

تبادل نظر و رفع عیب با ثبت دیدگاه