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

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

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

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

 


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


جهت نصب کتابخانه، می بایست به صورت دستی عمل کنیم. کتابخانه clap.h را باید از سورس اصلی آن دانلود کنید. جهت این مورد، کافیست روی این لینک کلیک کنید. با کلیک بر روی این لینک، به تصویر زیر می رسید. مطابق فلش ها، فایل زیپ را دانلود کنید. سپس در نرم افزار آردوینو، گزینه sketch، و سپس add zip library را انتخاب کرده و کتابخانه را اضافه کنید.

مراحل دانلود کتابخانه از گیت هاب - دیجی اسپارک

 


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


پس از نصب کتابخانه، نوبت به بررسی و تحلیل الزامات و نکات فنی کتابخانه می رسد. در ابتدا توجه داشته باشید که این کتابخانه داده های خود را از ورودی آنالوگ دریافت می کند. در کنار این، کتابخانه KnockDetector به صورت non blocking عمل کرده و برنامه را طبق الگوریتم خود، freeze نخواهد کرد. همچنین کتابخانه KnockDetector مستقل از معماری پردازنده بوده و بر روی کلیه پردازنده مورد پشتیبانی آردوینو، قابل اجراست. به عنوان مثال، کتابخانه KnockDetector بر روی بردهای آردوینو uno و mega و از طرفی بردهای ESP قابل اجراست.

 


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


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

  • KnockDetector (lowThreshold, noiseThreshold, callback);

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

void onKnockReceived(float knockIntensity, long pulseLength) {

// do something when a knock is received

// optionally do something with the two values

}

 

در ادامه، جهت کنترل ضربه و اجرای فرایند تابع callback، از تابع loop استفاده می شود. در ورودی این تابع باید مقدار ضربه قرارگیرد. بدیهی است که در ورودی این تابع باید مقدار analogRead خوانده شده ثبت شود.

 


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


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

#include <KnockDetector.h>  //کتابخانه تشخیص ضربه

const int sensorInputPin = A0;  //تنظیم پایه برای خواندن ورودی آنالوگ

void callback(float, long);  //تابع callbACK
KnockDetector knockDetector(20, 5, callback);  //ایجاد شی از کلاس کتابخانه

void callback(float knockIntensity, long pulseLength) {  //تابع کال بک
  Serial.println("Knock detected!");
  Serial.print("Knock intensity: ");Serial.println(knockIntensity);
  Serial.print("Knock Pulse length in microseconds: ");Serial.println(pulseLength);
}

void setup() {
  Serial.begin(9600);
}

void loop() {
    knockDetector.loop(analogRead(sensorInputPin));  //خواندن مقدار
}

 


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


لینک خرید سنسور ضربه، کلیک کنید

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

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

 


جمع بندی


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

 

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

 

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

معین صابری

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

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

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