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

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

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

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

 


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


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

روش نصب کتابخانه PCF8574.h - دیجی اسپارک

 

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

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

 


الزامات و نکات فنی استفاده از کتابخانه APDS9960


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

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

 


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


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

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

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

ورودی اول از نوع اشاره گر به پورت سخت افزاری I2C

ورودی دوم از نوع INT جهت تعیین پایه راه انداز سنسور

APDS9960(TwoWire &wire, int intPin)
به کمک این تابع سنسور راه اندازی شده و ارتباط بین برد آردوینو و سسنور برقرار می شود. بدون ورودی bool begin()
به کمک این تابع در دسترس بودن واحد تشخیص حرکت تعیین می گردد. در صورتیکه خروجی تابع ۱ شود این واحد در دسترس خواهد بود. بدون ورودی int gestureAvailable()
به کمک این تابع مقدار وضعیت حرکت خوانده شده و در خروجی قرار می گیرد. این تابع دارای مقادیر از پیش تعریف شده به صورت زیر است.

**********

GESTURE_UP: سنسور رو به بالاست

**********

GESTURE_DOWN: سنسور رو به پایین است.

**********

GESTURE_LEFT: سنسور به طرف چپ گرفته شده است.

***********

GESTURE_RIGHT:  سنسور به طرف راست گرفته شده است.

 

بدون ورودی int readGesture()
به کمک این تابع در دسترس بودن واحد تشخیص رنگ تعیین می گردد. در صورتیکه خروجی تابع ۱ شود این واحد در دسترس خواهد بود. بدون ورودی int colorAvailable()
به کمک این تابع رنگ های قرمز، آبی و سبز خوانده شده و مقدار(شدت) آن در ورودی های اول تا سوم قرار می گیرند. در صورتیکه خواندن مقادیر موفقیت آمیز باشند، خروجی تابع true خواهد بود. ورودی اول از نوع صحیح جهت تعیین رنگ قرمز

ورودی دوم از نوع صحیح جهت تعیین رنگ سبز

ورودی سوم از نوع صحیح جهت تعیین رنگ آبی

 

 

bool readColor(int& r, int& g, int& b)
به کمک این تابع در دسترس بودن واحد تشخیص مجاورت تعیین می گردد. در صورتیکه خروجی تابع ۱ شود این واحد در دسترس خواهد بود. بدون ورودی int proximityAvailable()
به کمک این تابع میزان مجاورت خوانده شده و در خروجی قرار می گیرد. این تابع دارای سه خروجی است. خروجی ۰ به معنای تشخیص نزدیک بودن شی است. خروجی ۲۵۵ به معنای دور بودن شی نسبت به سنسور و خزوجی ۱- به معنای خطاست. بدون ورودی int readProximity()
به کمک این تابع میزان حساسیت سنسور مجاورت تعیین می گردد. توجه داشته باشید که در حالت عادی حساسیت سنسور ۱۰۰ است. زمانی که شما عددی در ورودی قرار می دهید، این عدد از ۱۰۰ کسر می شود. به عنوان مثال با قرار دادن عدد ۸۰ در ورودی، حساسیت به ۲۰ خواهد رسید. مقادیر بیش از ۱۰۰ نیز ۱۰۰ در نظر گرفته خواهند شد. ورودی از نوع بدون علامت ۸ بیتی void setGestureSensitivity(uint8_t sensitivity)

 

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

 


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


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

#include <Arduino_APDS9960.h>  //اضافه کردن کتابخانه به برنامه
//توجه: می توان شی از کلاس تعریف نکرد و با اسم تعریف شده در کتابخانه، آن را راه اندازی نمود. این اسم APDS است.
void setup() {
  Serial.begin(9600);
  while (!Serial);

  if (!APDS.begin()) {
    Serial.println("Error initializing APDS-9960 sensor.");
  }
}

void loop() {

  while (! APDS.colorAvailable()) {    //انتظار  برای آماده شدن برای راه اندازی واحد تشخیص رنگ سنسور
    delay(5);
  }
  int r, g, b;   //تعریف متغیر برای ذخیره رنگ

  APDS.readColor(r, g, b);   //خواندن رنگ و قرار دادن در ورودی ها

  // چاپ مقادیر در خروجی
  Serial.print("r = ");
  Serial.println(r);
  Serial.print("g = ");
  Serial.println(g);
  Serial.print("b = ");
  Serial.println(b);
  Serial.println();

  // برای خواندن مجدد یک ثاینه صبر می کنیم.
  delay(1000);
}

 


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


برد آردوینو NANO 33 BLE

 


جمع بندی


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

 

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

 

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

معین صابری

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

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

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