در مجموعه آموزش های تحلیل و بررسی کتابخانه های آردوینو این قسمت را به یک کتابخانه کلیدی و کاربردی جهت ایجاد شکل موج های مختلف، اختصاص می دهیم. به کمک این کتابخانه کاربردی، می توان شکل موج های مختلف سینوسی، دندان اره ای، مربعی و…. را ایجاد نماییم. همانطور که اطلاع دارید، این موج ها از پرکاربردترین سیگنال ها در علم الکترونیک و برق به شمار می روند. در این آموزش به کمک کتابخانه functionGenerator.h می توانیم بدون نیاز به هیچ ماژول و یا قطعه دیگر، این موج ها را ایجاد نماییم. این کتابخانه به طرز ساده و موثری، بدون نیاز به کدها یپیچده و صرفا از طریق فراخوانی توابع می تواند موج های مد نظر کاربر را ایجاد نماید. در این آموزش به تحلیل و بررسی این کتابخانه می پردازیم. نخست به معرفی مختصر امواج مختلف می پردازیم. سپس در ادامه طریق نصب و الزامات فنی کتابخانه را از نظر خواهیم گذراند. پس از این مرحله به تحلیل و بررسی توابع کلیدی و کاربردی کتابخانه خواهیم پرداخت. در نهایت با ارایه مثالی، طریقه استفاده از توابع در برنامه ها را خواهیم دید. در ادامه تحلیل کتابخانه با مرجع تخصصی رزبری پای و آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
بررسی امواج مختلف
پیش از آنکه به ادامه بحث بپردازیم، این قسمت را به طور مختصر به مفهوم موج و بررسی امواج مختلف اختصاص می دهیم. مفهوم موج را می توان بر پایه تکرار یک عمل دانست. تکرار یک عمل را می توان در تراز مفهوم فرکانس قرار داد. به عبارت دیگر، فرکانس میزان تکرار یک عمل را گویند. به عنوان مثال وقتی گفته می شود که داده ها با فرکانس ۱۰ هرتز ارسال می گردند، یعنی داده ها هر ۱۰/۱ ثانیه(۰٫۱ ثانیه یا ۱۰۰ میلی ثانیه) ارسال می شوند. برای روشن تر شدن موضوع، تصویر زیر را مشاهده کنید.
همانطور که در شکل بالا مشخص است، از دل مفهوم فرکانس و زمان، موج پدیدار می گردد. امواج حاصل فرکانس خود هستند. به عبارت دیگر وجود فرکانس سبب ایجاد نموداری به اسم شکل موج می گردد. شکل موج، انواع مختلفی دارد. از شکل موج های معروف می توان به شکل موج سینوسی، مربعی، دندان اره ای، پله ای و… اشاره نمود. در زیر تصویر این امواج را مشاهده می کنید.
پس از آشنایی مختصر با امواج، نوبت به نصب کتابخانه functionGenerator می رسد. این کتابخانه آنطور که گفته شد، می توان امواج مختلف را بدون نیاز به چیپ اضافه تولید نماید. در ادامه به نصب کتابخانه می پردازیم.
نصب کتابخانه functionGenertor.h
اولین قدم در استفاده از یک کتابخانه، نصب آن در نرم افزار آردوینو است. جهت نصب کتابخانه، می بایست به روش دستی این کتابخانه را از صفحه گیت هاب آن دانلود و نصب کنیم. نصب کتابخانه بسیار ساده است. کافیست مراحل گفته شده در زیر را قدم به قدم انجام دهید.
- با کلیک بر روی این لینک، وارد صفحه کتابخانه در گیت هاب شوید.
- مطابق تصویر زیر، ابتدا بر روی گزینه code و سپس Download ZIP کلیک نمایید.
الزامات و نکات فنی کتابخانه functionGenerator.h
پس نصب کتابخانه، نوبت به بررسی نکات و الزامات فنی آن می رسد. در نکته اول توجه داشته باشید که این کتابخانه روی کلیه بردهای تحت پشتیبانی پلتفرم آردوینو فعال می گردد. به عبارت دیگر این کتابخانه مستقل از معماری پردازنده بر روی بردهای آدروینو مبتنی بر AVR، ARM و بردهای سری ESP قابل اجراست. در کنار این، این کتابخانه دارای محدودیت در ایجاد فرکانس بسته به موج و برد انتخابی است. جدول زیر این محدودیت ها را نمایش می دهد.
پردازنده | کلاک پردازنده | شکل موج | بیشترین فرکانس قابل اعمال |
Arduino UNO | ۱۶ MHz | sawtooth | ۶۰ Hz |
Arduino UNO | ۱۶ MHz | triangle | ۵۰ Hz |
Arduino UNO | ۱۶ MHz | square | ۱۰۰۰ Hz |
Arduino UNO | ۱۶ MHz | sinus | ۲۵ Hz |
Arduino UNO | ۱۶ MHz | stair | ۵۰ Hz |
Arduino UNO | ۱۶ MHz | random | ۱۰۰۰ Hz |
ESP32 | ۲۴۰ MHz | sawtooth | ۱۰۰۰ Hz |
ESP32 | ۲۴۰ MHz | triangle | ۱۰۰۰ Hz |
ESP32 | ۲۴۰ MHz | square | ۱۰۰۰ Hz |
ESP32 | ۲۴۰ MHz | sinus | ۲۵۰ Hz |
ESP32 | ۲۴۰ MHz | stair | ۸۰۰ Hz |
ESP32 | ۲۴۰ MHz | random | ۱۰۰۰ Hz |
پس از آشنایی با الزامات فنی، نوبت به تحلیل و بررسی توابع کلیدی و کاربردی می رسد. قسمت بعد مربوط به این موضوع است.
توابع کلیدی و کاربردی کتابخانه functionGenerator.h
پس از آشنایی با شکل موج های مختلف، نوبت به تحلیل و بررسی توابع کلیدی کتابخانه می رسد. جدول زیر لیست این توابع را نمایش می دهد.
شرح | تابع |
تابع سازنده کلاس کتابخانه
ورودی اول(از چپ) زمان(فرکانس) با مقدار پیشفرض ۱
ورودی دوم دامنه با مقدار پیشفرض ۱ ورودی سوم فاز با مقدار پیشفرض ۰ ورودی چهارم اختلاف فاز در محور Y با مقدار پیشفرض ۰ |
funcgen(float period = 1.0, float amplitude = 1.0, float phase = 0.0, float yShift = 0.0) |
تنظیم بازه زمانی موج با مقدار پیشفرض ۱ | void setPeriod(float period = 1.0) |
خواندن بازه زمانی موج | float getPeriod() |
تنظیم فرکانس با مقدار پیشفرض ۱ | void setFrequency(float freq = 1.0) |
خواندن مقدار فرکانس تنظیم شده | float getFrequency() |
تنظیم دامنه موج با مقدار پیشفرض ۱ | void setAmplitude(float ampl = 1.0) |
دریافت دامنه موج | float getAmplitude() |
تنظیم فاز موج با مقدار پیشفرض ۰ | void setPhase(float phase = 0.0) |
دریافت فاز موج | float getPhase() |
تنظیم اختلاف فاز موج با مقدار پیشفرض ۰ | void setYShift(float yShift = 0.0) |
دریافت مقدار اختلاف فاز تعیین شده | float getYShift() |
ایجاد موج دندان اره ای با مقدار زمان در ورودی | float sawtooth(float t) |
ایجاد موج مثلثی با مقدار زمان در ورودی | float triangle(float t) |
ایجاد مربعی با مقدار زمان در ورودی | float square(float t) |
ایجاد موج سینوسی با مقدار زمان در ورودی | float sinus(float t) |
ایجاد موج پله ای با مقدار زمان در ورودی | float stair(float t) |
ایجاد موج تصادفی یا به عبارت دیگر نویز | float random() |
پس از آشنایی با توابع کلیدی و کاربردی کتابخانه، نوبت به اجرای یک نمونه برنامه می رسد. قسمت بعد مربوط به این موضوع است.
اجرای یک نمونه برنامه
پس از آشنایی با توابع نوبت به اجرای یک نمونه برنامه می رسد. این برنامه امواج مختلف را با توجه به زمان تعیین شده در ورودی ایجاد می کند. در صورتیکه روی این لینک کلیک کنید، می توانید سورس برنامه را دانلود نمایید.
لوازم مورد نیاز
لینک خرید انواع برد آردوینو، کلیک کنید
جمع بندی
در مجموعه آموزش های تحلیل و بررسی کتابخانه های آردوینو، این قسمت را به یکی از کتابخانه های پرکاربرد آردوینو اختصاص دادیم. کتابخانه functionGenerator یک کتابخانه فوق العاده کاربردی جهت ایجاد موج های مختلف بر روی آردوینو است. این کتابخانه بدون نیاز به هیچ ماژول اضافه می توان اقدام به ایجاد موج های مربعی، سینوسی و دندان اره و….. نمود. این کتابخانه که بر روی کلیه بردهای آردوینو قابل اجراست، می تواند مستقل از معماری پردازنده روی بردهای آردوینو یا ESP32 اجرا گردد. در این آموزش ابتدا به بررسی مفهوم موج و توضیحات پایه امواج پرداختیم. سپس در ادامه نحوه نصب و الزامات فنی مورد تحلیل قرار گرفت. در نهایت پس از بررسی توابع کلیدی و کاربردی کتابخانه، به اجرای یک نمونه برنامه پرداختیم.
چنانچه مطالب ابن آموزش را گنگ یافتید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. تاکنون بیش از هزاران نظر و پاسخ در دیجی اسپارک درج شده است؛ پس نظرات شما ارزشمند بوده و سوالات بی پاسخ نمی مانند.