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

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

نوشته شده توسط معین صابری

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

 


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


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

Tone.h Library Analysis

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

 

Tone.h Library Analysis

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

 


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


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

Tone.h Library Analysis

 

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

Tone.h Library Analysis

 

پس از بررسی نکات فنی، نوبت به تشریح و معرفی توابع کتابخانه می رسد. در قسمت بعدی، به بررسی توابع کلیدی کتابخانه Tone پرداخته و در نهایت با ارائه مثالی، به بحث خاتمه خواهیم داد.

 


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


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

تابع ورودی ها شرح
void begin(uint8_t tonePin); تعیین پایه جهت ایجاد فرکانس به کمک این تابع، روند این کار راه اندازی می شود.
bool isPlaying(); بدون ورودی به کمک این تابع می توان تشخیص داد که آیا صدایی در حال پخش است یا خیر. در صورت پخش، خروجی این تابع true و در غیر اینصورت، false خواهد بود
    void play(uint16_t frequency, uint32_t duration = 0); ورودی اول فرکانس پخش

ورودی دوم به صورت اختیاری تعیین مدت زمان اجرا

به کمک این تابع می توانید فرکانس مورد نظر را همراه با مدت زمان اجرا، تنظیم و پخش کنید.  توجه کنید که ورودی دوم اختیاری است و می تواند در تابع لحاظ، نگردد.
void stop(); بدون ورودی به کمک این تابع، روال پخش متوقف خواهد شد.

 

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

ثابت تعریف شده فرکانس(Hz)
NOTE_B0 ۳۱
NOTE_C1 ۳۳
NOTE_CS1 ۳۵
NOTE_D1 ۳۷
NOTE_DS1 ۳۹
NOTE_E1 ۴۱
NOTE_F1 ۴۴
NOTE_FS1 ۴۶
NOTE_G1 ۴۹
NOTE_GS1 ۵۲
NOTE_A1 ۵۵
NOTE_AS1 ۵۸
NOTE_B1 ۶۲
NOTE_C2 ۶۵
NOTE_CS2 ۶۹
NOTE_D2 ۷۳
NOTE_DS2 ۷۸
NOTE_E2 ۸۲
NOTE_F2 ۸۷
NOTE_FS2 ۹۳
NOTE_G2 ۹۸
NOTE_GS2 ۱۰۴
NOTE_A2 ۱۱۰
NOTE_AS2 ۱۱۷
NOTE_B2 ۱۲۳
NOTE_C3 ۱۳۱
NOTE_CS3 ۱۳۹
NOTE_D3 ۱۴۷
NOTE_DS3 ۱۵۶
NOTE_E3 ۱۶۵
NOTE_F3 ۱۷۵
NOTE_FS3 ۱۸۵
NOTE_G3 ۱۹۶
NOTE_GS3 ۲۰۸
NOTE_A3 ۲۲۰
NOTE_AS3 ۲۳۳
NOTE_B3 ۲۴۷
NOTE_C4 ۲۶۲
NOTE_CS4 ۲۷۷
NOTE_D4 ۲۹۴
NOTE_DS4 ۳۱۱
NOTE_E4 ۳۳۰
NOTE_F4 ۳۴۹
NOTE_FS4 ۳۷۰
NOTE_G4 ۳۹۲
NOTE_GS4 ۴۱۵
NOTE_A4 ۴۴۰
NOTE_AS4 ۴۶۶
NOTE_B4 ۴۹۴
NOTE_C5 ۵۲۳
NOTE_CS5 ۵۵۴
NOTE_D5 ۵۸۷
NOTE_DS5 ۶۲۲
NOTE_E5 ۶۵۹
NOTE_F5 ۶۹۸
NOTE_FS5 ۷۴۰
NOTE_G5 ۷۸۴
NOTE_GS5 ۸۳۱
NOTE_A5 ۸۸۰
NOTE_AS5 ۹۳۲
NOTE_B5 ۹۸۸
NOTE_C6 ۱۰۴۷
NOTE_CS6 ۱۱۰۹
NOTE_D6 ۱۱۷۵
NOTE_DS6 ۱۲۴۵
NOTE_E6 ۱۳۱۹
NOTE_F6 ۱۳۹۷
NOTE_FS6 ۱۴۸۰
NOTE_G6 ۱۵۶۸
NOTE_GS6 ۱۶۶۱
NOTE_A6 ۱۷۶۰
NOTE_AS6 ۱۸۶۵
NOTE_B6 ۱۹۷۶
NOTE_C7 ۲۰۹۳
NOTE_CS7 ۲۲۱۷
NOTE_D7 ۲۳۴۹
NOTE_DS7 ۲۴۸۹
NOTE_E7 ۲۶۳۷
NOTE_F7 ۲۷۹۴
NOTE_FS7 ۲۹۶۰
NOTE_G7 ۳۱۳۶
NOTE_GS7 ۳۳۲۲
NOTE_A7 ۳۵۲۰
NOTE_AS7 ۳۷۲۹
NOTE_B7 ۳۹۵۱
NOTE_C8 ۴۱۸۶
NOTE_CS8 ۴۴۳۵
NOTE_D8 ۴۶۹۹
NOTE_DS8 ۴۹۷۸

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

 


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


در این قسمت به اجرای یک نمونه برنامه از کتابخانه Tone.h می پردازیم. در این برنامه، یک صدا با فرکانس ۴۴۰ هرتز که مطابق جدول صدادها نام ثابت NOTEA4 دارد، پخش می گردد.

#include <Tone.h>   //فراخوانی کتابخانه

Tone tone1;   //ایجاد یک شی از کتابخانه

void setup()
{
  tone1.begin(13);    // ایجاد فرکانس بر روی پایه ۱۳
  tone1.play(NOTE_A4);   //پخش صدای NOTE_A4 که فرکانس ۴۴۰ هرتز دارد
}

void loop()
{
}

 


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


  1. ماژول بازر
  2. انواع بردهای آردوینو 

 


جمع بندی


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

 

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

 

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

معین صابری

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

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

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