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

تحلیل و بررسی کتابخانه everytime.h

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

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

 


نصب کتابخانه everytime.h


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

روش نصب کتابخانه PCF8574.h - دیجی اسپارک

 

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

 


الزامات و نکات فنی کتابخانه everytime.h


کتابخانه everytime.h جهت زمانبندی، از تابع millis() استفاده می کند. همانطور که اطلاع دارید، تابع millis() در برد آردوینو UNO از تایمر شماره ۱ جهت تعیین زمان استفاده می کند. از این رو دقت نظر لازم را در نظر داشته باشید. در کنار این، با توجه به استفاده این کتابخانه از تابع millis()، به نظر می رسد که این کتابخانه روی پلتفرم آردوینو کار کند. جهت اطلاعات بیشتر در رابطه با تابع millis()، آموزش آن را با کلیک بر روی این لینک، مطالعه کنید.

 


توابع کلیدی و کاربردی کتابخانه everytime.h


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

شرح تابع
این تابع دستورات را هر x میلی ثانیه یکبار اجرا می کند. مقدار X 8 بیت است. everyb(X)
این تابع دستورات را هر x میلی ثانیه یکبار اجرا می کند. تفاوت این تابع با تابع مرحله قبل در این است که این تابع از همین الان دستورات را اجرا کرده و سپس به مدت x برای دفعه بعد صبر می کند. اما تابع مرحله قبل صبر می کند تا زمان x طی شود و سپس دستورات را اجرا می کند. مقدار X 8 بیت است. everynowb(X)
این تابع دستورات را هر x میلی ثانیه یکبار اجرا می کند. مقدار X 16 بیت است. every(X)
این تابع دستورات را هر x میلی ثانیه یکبار اجرا می کند. تفاوت این تابع با تابع مرحله قبل در این است که این تابع از همین الان دستورات را اجرا کرده و سپس به مدت x برای دفعه بعد صبر می کند. اما تابع مرحله قبل صبر می کند تا زمان x طی شود و سپس دستورات را اجرا می کند. مقدار X 16 بیت است. everynow(X)
این تابع دستورات را هر x میلی ثانیه یکبار اجرا می کند. مقدار X 32 بیت است. everyl(X)
این تابع دستورات را هر  x میلی ثانیه یکبار اجرا می کند. تفاوت این تابع با تابع مرحله قبل در این است که این تابع از همین الان دستورات را اجرا کرده و سپس به مدت x برای دفعه بعد صبر می کند. اما تابع مرحله قبل صبر می کند تا زمان x طی شود و سپس دستورات را اجرا می کند. مقدار X 32 بیت است. everynowl(X)
این تابع دستورات را هر x میکرو ثانیه یکبار اجرا می کند. مقدار X 16 بیت است. everyu(X)
این تابع دستورات را هر  x میکرو ثانیه یکبار اجرا می کند. تفاوت این تابع با تابع مرحله قبل در این است که این تابع از همین الان دستورات را اجرا کرده و سپس به مدت x برای دفعه بعد صبر می کند. اما تابع مرحله قبل صبر می کند تا زمان x طی شود و سپس دستورات را اجرا می کند. مقدار X 16 بیت است. everynowu(X)
این تابع دستورات را هر x میکرو ثانیه یکبار اجرا می کند. مقدار X 32 بیت است. everyul(X)
این تابع دستورات را هر  x میکرو ثانیه یکبار اجرا می کند. تفاوت این تابع با تابع مرحله قبل در این است که این تابع از همین الان دستورات را اجرا کرده و سپس به مدت x برای دفعه بعد صبر می کند. اما تابع مرحله قبل صبر می کند تا زمان x طی شود و سپس دستورات را اجرا می کند. مقدار X 32 بیت است. everynowul(X)

 

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

 


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


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

#include "everytime.h"
#include <avr/sleep.h> 

void setup(){
    Serial.begin(115200);
}

void loop(){

    every(1500){   //دستوراتی که باید تکرار شوند درون این تابع قرار می گیرند.
        Serial.print("its ");
        Serial.println(millis());
    }
    everynow(10000){
        Serial.print("a minute has gone by ");
        Serial.println(millis());
    }

}

 


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


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

انواع برد ESP

 


جمع بندی


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

 

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

 

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

معین صابری

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

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

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