بازرها یکی از مهم ترین و پرکابردترین ابزارها در طراحی سیستم های مختلف به شمار می روند. زمانیکه دستگاهی بخواهد اخطار صوتی به کاربر دهد، بازرها بهترین انتخاب خواهند بود. از بازرها در دستگاه های پزشکی، خودروها، لوازم خانگی و بسیاری دیگر از موارد استفاده می شود. صدای خوب و قیمت بسیار مناسب از دلایل انتخاب این بلندگوهای کوچک در طراحی سیستم های مختلف است.
جهت فعال سازی بازرها باید پالس های مختلف یبه آن اعمال کرد. در حقیقت با اعمال پالس و تغییر فرکانس پالس می توان صدای خاصی را تولید نمود. جهت هرچه راحت شدن تولید پالس، کتابخانه EasyBuzzer طراحی و توسعه یافته است. به کمک این کتابخانه می توان به سادگی اقدام به ایجاد صداهای مختلف برای بازر نمود. در حقیقت به کمک این کتابخانه، در هنگامی طراحی یک سیستم ذهن طراح معطوف به الگوریتم اصلی برنامه خواهد شد. در این آموزش به تحلیل و بررسی این کتابخانه می پردازیم. در ابتدا نحوه نصب و الزامات فنی آن را خواهیم داشت. در ادامه توابع کلیدی و کاربردی کتابخانه مورد بررسی قرار خواهد گرفت. در ادامه تحلیل کتابخانه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
نصب کتابخانه EasyBuzzer
همانطور که اطلاع دارید، کتابخانه ها یکی از ابزارهای کلیدی و کاربردی در برنامه نویسی به شمار می روند. به کمک این ابزار، می توانیم توابع نوشته شده در فایلهایی به نام کتابخانه ذخیره کرده و سپس در پروژه های متعدد از آن استفاده کنیم. همانطور که پیشتر گفته شد، برای راه اندازی و کار با ماژول کتابخانه توسعه داده شده است. برای استفاده از این کتابخانه، ابتدا باید آن را نصب کنیم. برای نصب کتابخانه در محیط آردویینو، ابتدا مطابق تصویر زیر بر روی گزینه Tools و سپس Manage Libraries کلیک کنید.
پس از کلیک بر روی گزینه Manage Libraries، در صفحه ظاهر شده، در قسمت کادر جستجو، عبارت EasyBuzzer را جستجو نموده و کتابخانه مشخص شده در تصویر را نصب نمایید.
الزامات و نکات فنی کتابخانه EasyBuzzer
پس از نصب کتابخانه، نوبت به بررسی الزامات و نکات فنی آن می رسد. توجه داشته باشید که کتابخانه EasyBuzzer از PWM سخت افزاری جهت کنترل بازر استفاده می کند. از طرف دیگر، این کتابخانه بر روی کلیه بردهای مورد پشتیبانی پلتفرم آردوینو قابلیت اجرا دارد. به عبارت دیگر این کتابخانه مستقل از معماری بوده و بر روی پردازنده های ARM، XTENSA و AVR قابلیت اجرا دارد. با توجه به این، کتابخانه EasyBuzzer به سادگی بر روی بردهای آردوینو UNO و MEGA قابلیت اجرا دارد.
توجه: جهت اتصال بازر به میکروکنترلر، از آنجاییکه جریان خروجی پایه GPIO میکروکنترلر ضعیف است، بهتر است از یک ترانزیستور استفاده کنید.
توابع کلیدی و کاربردی کتابخانه EasyBuzzer
پس از بررسی الزامات فنی نوبت به نصب کتابخانه می رسد. تابع اصلی در این کتابخانه، تابعی به نام beep است. این تابع فراخوانی های مختلفی دارد. در ساده ترین متد فراخوانی، این تابع به شکل زیر دیده می شود.
- void beep(unsigned int frequency)
در تابع فوق، فرکانس پالس تعیین می شود. در این حالت به صورت پیشفرض موج بر روی پایه شماره ۴ ایجاد می شود. در حالت دیگر، این تابع به شکل زیر هم فراخوانی می شود.
- void beep(unsigned int frequency, unsigned int beeps)
مطابق تعریف فوق، علاوه بر فرکانس، تعداد دفعات beep نیز در ورودی دوم درج می شود. در ادامه فراخوانی ها، این تابع را می توان به فرم زیر هم فراخوانی نمود.
- void beep(unsigned int frequency, unsigned int beeps, void (*finishedCallbackFunction)())
در فراخوانی فوق، ورودی آخر یک تابع callback است. هرگاه که اجرای عملیات به صدا در آوردن بوق به اتمام برسد، تابع فراخوانی می شود. در ادامه، فرم کامل تری از فراخوانی این کتابخانه را می توان به شکل زیر دید.
- void beep(unsigned int frequency, unsigned int const onDuration, unsigned int const offDuration, byte const beeps, unsigned int const pauseDuration, unsigned int const sequences);
مطابق تابع فوق، ورودی onDuration مدت زمان روشن بودن بازر، offDuration مدت زمان خاموش بودن بازر، pauseDuaration مدت زمان توقف عملیات و در نهایت sequences تعداد دفعات تکرار چرخه را تعیین می کند. به عبارت دیگر این ورودی تعیین می کند که چند مرتبه بازر روشن و خاموش باشد. در ادامه، تابع زیر همانند تابع فوق است، با این تفاوت که تابع callback نیز درج شده است.
- void beep(unsigned int frequency, unsigned int const onDuration, unsigned int const offDuration, byte const beeps, unsigned int const pauseDuration, unsigned int const sequences, void (*finishedCallbackFunction)())
در ادامه موضوع، دو تابع به صورت تک بوق یا singlebeep داریم. این تابع نخست به شکل زیر قابل فراخوانی است.
- void singleBeep(unsigned int frequency, unsigned int duration)
در تابع فوق، فرکانس و مدت زمان تک بوق به ترتیب در ورودی های اول و دوم درج شده است. در ادامه این تابع را می توانید با یک تابع callback نیز فراخوانی کنید.
- void singleBeep(unsigned int frequency, unsigned int duration, void (*finishedCallbackFunction)())
در ادامه چنانچه بخواهید روال بازر را متوقف کنید، تابع زیر را می توانید فراخوانی کنید.
- void stopBeep()
چنانچه در حین اجرای برنامه بخواهید پارامترهایی که پیشتر تنظیم کرده اید را تغیر دهید، این امکان توسط کتابخانه پیش بینی شده است. به عنوان مثال به کمک تابع زیر و با قرارگیری عدد شماره پایه، می توانید شماره پایه بازر را تغییر دهید.
- void setPin(unsigned int pin)
همچنین به کمک تابع زیر می توانید مدت زمان روشن بودن بازر را تنظیم مجدد کنید.
- void setOnDuration(unsigned int duration)
به طور مشابه به کمک تابع زیر می توانید مدت زمان خاموش بودن بازر را تعیین کنید.
- void setOffDuration(unsigned int duration)
در نهایت به کمک تابع زیر می توانید مدت زمان توقف را تنظیم نمایید.
- void setPauseDuration(unsigned int duration)
در نهایت در حین اجرای برنامه تابع زیر باید همواره در loop فراخوانی گردد.
- void update()
در نهایت پس از آشنایی با توابع، نوبت به اجرای نمونه برنامه می رسد. برای این موضوع، در منوی Files->Examplses->EasyBuzzer->Beep را اجرا کنید. در این برنامه هر یک از توابع را که مد نظر داشتید، اجرا کنید. در این خصوص به پایه پیشفرض که شماره ۴ است دقت کنید. به کمک تابع setpin می توانید شماره پایه را تغییر دهید.
لوازم مورد نیاز
لینک خرید انواع برد ESP، کلیک کنید
لینک خرید انواع برد آردوینو، کلیک کنید
لینک خرید ترانزیستور، کلیک کنید
لینک خرید مقاومت یک کیلو اهمی، کلیک کنید
جمع بندی
در مجموعه آموزش های تحلیل و بررسی کتابخانه های آردوینو، این آموزش را به کتابخانه EasyBuzzer اختصاص دادیم. کتابخانه EasyBuzzer یک ابزار فوق العاده کلیدی و کاربردی جهت راه اندازی و کار با بازرهاست. بازرها، آنطور که اطلاع دارید، یک بلندگو کوچک هستند. این بلندگوها می توانند یک صدا تولید کنند. این صدا که یک صدای تک بوق است، در گجت های بسیاری نظیر سنسور دنده عقب خودرو، لوازم خانگی و کالاهای پزشکی کاربرد دارد. جهت ایجاد صداهای مختلف با قابلیت های کنترل بسیار، کتابخانه EasyBuzzer را در این آموزش تحلیل و بررسی نمودیم. به کمک این کتابخانه به فرمی سریع و به شکلی آسان، می توانید بازر متصل به دستگاه خود را کنترل کنید.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.