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

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

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

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

در این آموزش نیز قصد داریم تا به تحلیل و بررسی توابع کلیدی و کاربردی کتابخانه Geekble_Oscillator.h بپردازیم. به کمک این کتابخانه می توانیم یک منبع کلاک با فرکانس بین ۳۱٫۲۵ کیلوهرتز تا ۸ مگاهرتز ایجاد کنیم. این آموزش را مطابق رویه معمول سلسله آموزش ها پیش می بریم. بنابراین در ادامه این آموزش  تحلیل کتابخانه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 


نوسان ساز تعریف و کاربرد


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

اسیلاتور و تولید پالس - دیجی اسپارک

 

برای روشن تر شدن موضوع، یک آی سی شمارنده را در نظر بگیرید. این آی سی وظیفه دارد تا بین اعداد ۰ الی ۹ شمرده و پس از عدد ۹ مجددا صفر شده و از آغاز بشمارد. برای اینکه این شمارنده از هر وضعیت به وضعیت بعد برود، باید یک پالس دریافت کند. با هر بار دریافت پالس، شمارنده می تواند از وضعیت فعلی به وضعیت بعدی سوییچ کند. این پالس توسط منبع فرکانس تامین شده و به آی سی اعمال می شود. آی سی با دریافت پالس، شروع به تغییر از وضعیت فعلی به بعدی می نماید.

 


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


همانطور که اطلاع دارید، کتابخانه ها یکی از ابزارهای کلیدی و کاربردی در برنامه نویسی به شمار می روند. به کمک این ابزار، می توانیم توابع نوشته شده در فایلهایی به نام کتابخانه ذخیره کرده و سپس در پروژه های متعدد از آن استفاده کنیم.  همانطور که پیشتر گفته شد، برای راه اندازی و کار با ماژول کتابخانه توسعه داده شده است. برای استفاده از این کتابخانه، ابتدا باید آن را نصب کنیم. برای نصب کتابخانه در محیط آردویینو، ابتدا مطابق تصویر زیر بر روی گزینه Tools و سپس Manage Libraries کلیک کنید.

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

 

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

روش دانلود و نصب کتابخانه Geekble_Oscillator - دیجی اسپارک

 


نکات فنی کتابخانه Geekble_Oscillator.h


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

  • UNO
  • NANO
  • MAGEA

کتابخانه Geekble_Oscillator.h از تایمر شماره ۲ میکروکنترلر استفاده می کند. همچنین این کتابخانه به کمک این تایمر موج PWM را در حالت FAST اجرا خواهد نمود.

 


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


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

  • Geekble_Oscillator()
  • void Divide_8MHz_by(uint16_t Divide_Variable)
  • void Run(uint8_t On_Off)

تابع نخست، در حقیقت تابع سازنده کلاس کتابخانه است. در هنگام تعریف یک شی از این کلاس، باید این تابع فراخوانی شود.  در ادامه تابع بعدی، وظیفه ایجاد فرکانس مد نظر کاربر را بر عهده دارد. این فرکانس به صورت تقسیمی از ۸ مگاهرتز با توجه به عدد ورودی، ایجاد می شود. به عنوان مثال اگر در ورودی عدد یک قرار دهید، فرکانس برابر با ۸MHZ/1  و برابر با ۸ مگاهرتز خواهد شد. در صورتیکه در ورودی عدد ۱۰۰۰ قرار دهید، فرکانس نهایی برابر با  ۸MHZ/1000 یا ۸ کیلوهرتز خواهد بود.

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

توابع کاربردی کتابخانه Geekble_Oscillator - دیجی اسپارک

 

در یک موج مربع، علاوه بر فرکانس مفهومی به نام Duty Cycle وجود دارد. این مفهوم مدت زمان صفر و یک بودن را در بازه زمانی ایجاد شده توسط فرکانس تعیین می کند. در کتابخانه Geekble_Oscillator.h این پارامتر بر روی مقدار ۵۰ درصد به صورت ثابت تنظیم شده است.

 


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


پس از آشنایی با کتابخانه Geekble_Oscillator.h، نوبت به اجرای یک نمونه برنامه می رسد. برنامه زیر یک فرکانس را بر روی  پایه شماره ۱۱ ایجاد کرده و پس از ۱۵ ثانیه، آن را از روی پایه بر می دارد.

#include <Geekble_Oscillator.h>   //فراخوانی کتابخانه 
Geekble_Oscillator Freq_Sweep;    //تعریف شی از کلاس کتابخانه 

void setup()
{                                  
    Freq_Sweep = Geekble_Oscillator();  //فراخوانی تابع سازنده از کلاس کتابخانه 
    Freq_Sweep.Divide_8MHz_by(1);  //تقسیم فرکانسی و ایجاد فرکانس ۸ مگاهرتز
    Freq_Sweep.Run(1);   //راه اندازی موج روی پای ۱۵
    for(int i=0; i<15; i++)  //ایجاد تاخیر ۱۵ ثانیه ای
    delay(1000);
    Freq_Sweep.Run(0);  //توقف موج
}

void loop()
{

}

 


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


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

 


جمع بندی


در مجموعه آموزش های تحلیل و بررسی کتابخانه های آردوینو، این قسمت را به کتابخانه تولید پالس اختصاص دادیم. به کمک کتابخانه Geekble_Oscillator.h می توان به سادگی بر روی پایه شماره ۱۱ آردوینو، یک موج با فرکانس بین ۳۱٫۲۵ کیلو الی ۸ مگاهرتز راه اندازی نمود. در این آموزش، مطابق رویه معمول سایر آموزش های کتابخانه ای، ابتدا به بررسی منابع فرکانسی یا اسیلاتورها پرداختیم. سپس در ادامه نصب و بررسی الزامات فنی کتابخانه، از نظر گذرانده شد. پس از این مرحله، توابع کلیدی و کاربردی را مورد تجزیه و تحلیل قرار دادیم. در نهایت با ارایه یک مثال، نحوه استفاده از توابع را در مثال های عملی مشاهده نمودیم.

 

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

 

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

معین صابری

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

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

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