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

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

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

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

 


الزامات و نکات فنی کتابخانه servo.h


پس از نصب کتابخانه، نوبت به بررسی الزامات و نکات فنی آن می رسد. پیش از هر چیز توجه داشته باشید که کتابخانه Servo جز کتابخانه های پایه ای بوده و نیازی به نصب ندارد. در حقیقت این کتابخانه درون هسته نرم افزاری آردوینو(CORE) قرار گرفته و هیچ نیازی به نصب ندارد. در ادامه این موضوع، کتابخانه servo.h بر روی معماری های خاصی از پردازنده ها فعال است. به عبارت دیگر این کتابخانه روی کلیه بردها قابلیت اجرا ندارد. بردهای قابل پشتیبانی با معماری های مختلف توسط این کتابخانه عبارتند از.

  • AVR
  • MEGAAVR
  • SAM
  • SAMD
  • NRF52
  • STM32F4

با توجه به معماری های ذکر شده در بالا، این کتابخانه روی بردهای آردوینو نظیر UNO، DUE، MEGA و…. قابلیت اجرا دارد. در قسمت بعد با توابع کلیدی و کاربردی کتابخانه آشنا خواهیم شد.

 


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


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

شرح ورودی ها تابع
این تابع در حقیقت تابع سازنده کلاس کتابخانه است. بدون ورودی Servo()
به کمک این تابع شماره پایه میکروکنترلر جهت اتصال به سرو موتور تعیین می گردد. در صورتیکه با موفقیت ارتباط برقرار نشود، خروجی تابع ۰ خواهد بود. ورودی از نوع عدد صحیح جهت تعیین شماره پایه uint8_t attach(int pin)

 

 

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

ورودی دوم حداقل تعداد دفعات ارسال پالس به سرو

ورودی سوم حداکثر تعداد دفعات ارسال پالس به سرو

uint8_t attach(int pin, int min, int max)
به کمک این تابع می توان ارتباط بین سرو و میکروکنترلر را قطع نمود. بدون ورودی
  void detach();
به کمک این تابع می توان پالس را روی موتور اعمال نمود. مقدار پالس در ورودی تابع قرار می گیرد.

توجه: در صورتیکه ورودی کمتر از ۲۰۰ باشد به عنوان زاویه در نظر گرفته می شود. در غیر اینصورت به عنوان عرض پالس در واحد میکروثانیه در نظر گرفته می شود.

ورودی جهت نوشتن پالس   void write(int value)
به کمک این تابع می توان وضعیت موتور را خواند. خروجی این تابع به صورت عرض پالس بوده و مقداری بین ۰ الی ۱۸۰ خواهد بود. بدون ورودی int read()
این تابع عرض پالس را در واحد میکروثانیه خوانده و در خروجی قرار می دهد. بدون ورودی int readMicroseconds()
در صورتیکه موتور به میکرو متصل باشد خروجی TRUE خواهد شد. بدون ورودی bool attached()

 

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

 


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


پس از بررسی توابع کلیدی و کاربردی، نوبت به اجرای یک نمونه برنامه می رسد. در برنامه زیر، وضعیت سرور موتور بین زاویه ۰ الی ۱۸۰ و سپس بلافاصله بین زاویه ۱۸۰ الی ۰، کنترل می شود.

#include <Servo.h>  //فراخوانی کتابخانه
Servo myservo;  // ایجاد یک شی از کلاس کتابخانه
int pos = 0;    // متغیر جهت ذخیره سازی موقعیت

void setup() {
  myservo.attach(9);  // تعریف پایه شماره ۹ اردوینو برای اتصال به سروو موتور
}

void loop() {
  for (pos = 0; pos <= 180; pos += 1) { // حرکت سرو از ۰ درجه الی ۱۸۰
    // in steps of 1 degree
    myservo.write(pos);              // دستور حرکت به موتور
    delay(15);                       // تاخیر ۱۵ میلی ثانیه ای برای اجرا
  }
  for (pos = 180; pos >= 0; pos -= 1) { //حرکت برعکس موتور از زاویه ۱۸۰ به ۰
    myservo.write(pos);              // دستور برای اجرای موتور
    delay(15);                       //تاخیر ۱۵ میلی ثانیه ای برای حرکت موتور
  }
}

 


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


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

لینک خرید انواع سرو موتور، کلیک کنید

 


جمع بندی


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

 

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

 

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

معین صابری

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

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

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