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

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

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

کتابخانه ها یکی از مهم ترین و پرکابردترین ابزارهای برنامه نویسی به شمار می روند. به کمک کتابخانه ها حجم کدها کاهش یافته، عیب یابی ساده تر شده و روال توسعه پروژه سرعت خواهد یافت. با توجه به جامعه کاربری گسترده و قوی آردوینو، امروزه شاهد توسعه کتابخانه های بسیاری برای این برد کلیدی هستیم. یکی از کتابخانه های کاربردی، کتابخانه سنجش فرکانس است. به کمک این کتابخانه می توان با تعیین زمان (T) تعداد پالس ها را شمارش کرده و در نتیجه فرکانس را محاسبه نمود. در این آموزش به تحلیل کتابخانه FreqCount می پردازیم. این کتابخانه روال سنجش فرکانس را بسیار ساده می کند بدین تریتب به کمک این کتابخانه به سرعت و در زمانی کم، می توانیم یک فرکانس متر با آردوینو بسازیم. در ادامه تحلیل کتابخانه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 


مفهوم فرکانس


پیش از اینکه به ادامه بحث بپردازیم، به مفهوم فرکانس خواهیم پرداخت. در کلامی ساده، فرکانس به تعداد دفعات تکرار یک عمل در یک بازه زمانی خاص گفته می شود. به عنوان مثال، یک بازه زمانی ۱۰ ثانیه را در نظر بگیرید. در صورتیکه شما در این ۱۰ ثانیه یک کلید را ۴ بار روشن و خاموش کنید، یک فرکانس تولید کرده اید. در سیستم های دیجیتال نیز به همین منوال است. فرض کنید قصد دارید یک LED را برای یک ثانیه روشن و سپس برای یک ثانیه خاموش کنید. در این حالت فرکانس کاری برابر با یک خواهد بود. واحد اندازه گیری فرکانس به افتخار دانشمند آلمانی هانریش هرتز، هرتز در نظر گرفته شده است. در مثال LED، عملیات با فرکانس یک هرتز در حال انجام شدن است.

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

 


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


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

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

 

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

نصب کتابخانه FreqCount در آردوینو - دیجی اسپارک

 


الزامات و نکات فنی کتابخانه FreqCount


کتابخانه FreqCount جهت محاسبه فرکانس اعمال شده به میکروکنترلر توسعه یافته است. به کمک این کتابخانه می توان یک اسیلسکوپ ساده ساخت. کتابخانه FreqCount پالس های ورودی را روی پایه های خاصی از میکروکنترلر قبول می کند. در کنار این، کتابخانه FreqCount بر روی کلیه بردهای آردوینو قابل اجراست. به عبارت دیگر این کتابخانه مستقل از معماری بوده و بر روی کلیه معماری ها قابل اجراست. بدین ترتیب از این کتابخانه می توان در بردهای آردوینو مبتنی بر AVR و یا پردازنده های ESP، استفاده نمود.

 


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


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

شرح ورودی تابع
این تابع در حقیقت تابع سازنده کلاس کتابخانه است. در ورودی این تابع مدت زمان اندازه گیری به میلی ثانیه درج شده است. در صورتیکه ورودی ۱۶ بیتی باشد، زمان در واحد میلی ثانیه خواهد بود. ورودی جهت تعیین زمان اندازه گیری static void begin(uint16_t msec);
این تابع در حقیقت تابع سازنده کلاس کتابخانه است. در ورودی این تابع مدت زمان اندازه گیری به میکرو ثانیه درج شده است. در صورتیکه ورودی ۳۲ بیتی باشد، زمان به میکروثانیه است. ورودی جهت تعیین زمان اندازه گیری static void begin(uint32_t usec)
این تابع در صورتیکه فرکانس خوانده شده و آماده باشد، خروجی HIGH و در غیر اینصورت LOW خواهد داشت. بدون ورودی static uint8_t available(void);
این تابع مقدار فرکانس را خوانده و در خروجی  قرار می دهد. خروجی تابع از نوع unint32_t، ۳۲ بیتی، است. بدون ورودی static uint32_t read(void)
این تابع ارتباط جهت خوانش فرکانس را قطع می نماید. بدون ورودی static void end(void)

 

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

 


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


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

#include <FreqCount.h>  //درج کتابخانه 
uint16_t tm=1000;
void setup() {
  Serial.begin(9600); //باودریت سریال 
  FreqCount.begin(tm);  //تعیین زمان اندازه گیری  چون زمان بر حسب ورودی ۱۶ بیتی تعیین شده، پس واحد میلی ثانیه است.
}

void loop() {
  if (FreqCount.available()) {  //در صورتیکه فرکانس شمارش و آماده باشد.
    unsigned long count = FreqCount.read();  //خواندن فرکانس
    Serial.println(count);  //چاپ فرکانس
  }
}

 


 لوازم مورد نیاز


لینک خرید انواع برد آردوینو، کلیک کنید

لینک خرید انواع برد ESP، کلیک کنید

لینک خرید بردهای تینسی، کلیک کنید

 


جمع بندی


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

 

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

 

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

معین صابری

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

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

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