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

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

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

در مجموعه آموزش های تحلیل و بررسی کتابخانه های آردوینو، این قسمت را به یکی از کتابخانه های جذاب و کاربردی اختصاص می دهیم. حتما با ماژول های رله آشنا هستید، این ماژول ها راه اندازی و کار با رله ها را بسیار تسریع بخشیده و نیازی هم به مدار جانبی راه انداز نیستند. در کنار این، نوع جدیدی از رله ها در بازار عرضه شده که دارای ۴ و یا ۸ کانال هستند. این ماژول ها از پروتکل I2C پشتیبانی می کنند. در این صورت بر خلاف ماژول های رله معمولی، راه اندازی این ماژول ها تنها نیاز به ۲ پایه دارد. به عبارت دیگر، برای کنترل ۸ کانال، تنها ۲ پایه از میکروکنترلر اشغال می شود. در طرف دیگر جهت راه اندازی و کار با این ماژول ها، کتابخانه تحت اردوینو توسعه یافته است. در این آموزش به تحلیل و بررسی این کتابخانه می پردازیم. در ادامه آموزش کتابخانه multi_channel_relay با مرجع تخصصی کتابخانه آردوینو به زبان فارسی ، دیجی اسپارک همراه باشید.

 


رله های چند کانال I2C


احتمالا با رله های چند کانال معمولی آشنا هستید. این ماژول های رله بر روی خود از چندی رله بهره می برند. در این ماژول رله برای فرمان به هر کدام از رله ها، نیاز به یک پایه GPIO از سمت میکروکنترلر دارید. به عنوان مثال برای یک ماژول رله ۸ کانال، شما به ۸ پایه از میکروکنترلر نیاز دارید. اما جهت کاهش پایه های اشغال شده از سوی میکروکنترلر، ماژول های رله چند کانال I2C بسیار کاربردی هستند. این ماژول ها تنها از طریق ۲ پایه I2C می توانند تعداد ۴ و یا ۸ کانال را کنترل نمایند. جهت راه اندازی و کار با این ماژول کاربردی کتابخانه تحت آردوینو توسعه یافته است و بدین ترتیب به سادگی و بدون درگیر شدن با جزییات نرم افزاری، می توانیم به این ماژول فرمان داده و کانال های آن را کنترل نماییم. قسمت بعد مربوط به توابع کلیدی و کاربردی کتابخانه است.

 


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


پس از بررسی ماژول رله چند کانال، نوبت به تحلیل و بررسی الزامات و نکات فنی آن می رسد. پیش از هرچیز، توجه داشته باشید که این کتابخانه روی کلیه بردهای مورد پشتیبانی پلتفرم اردوینو قابلیت اجرا دارد. به عبارت دیگر این کتابخانه مستقل از معماری بوده و بر روی بردهای مبتنی بر تراشه AVR، ARM و ESP قابلیت اجرا دارد. به عبارت دیگر این کتابخانه می تواند روی برد آردوینو UNO، ESP و DUE اجرا گردد. در کنار این، کتابخانه رله از پورت سریال I2C جهت برقراری ارتباط استفاده می کند. بنابراین برد آردوینو شما باید از این پورت به صورت سخت افزاری پشتیبانی کند.

 


نصب کتابخانه multi_channel_relay.h


همانطور که اطلاع دارید، کتابخانه ها یکی از ابزارهای کلیدی و کاربردی در برنامه نویسی به شمار می روند. به کمک این ابزار، می توانیم توابع نوشته شده در فایل هایی به نام کتابخانه ذخیره کرده و سپس در پروژه های متعدد از آن استفاده کنیم.  همانطور که پیشتر گفته شد، برای راه اندازی و کار با ماژول کتابخانه توسعه داده شده است. برای استفاده از این کتابخانه، ابتدا باید آن را نصب کنیم. برای نصب کتابخانه در محیط آردویینو، ابتدا مطابق تصویر زیر بر روی گزینه Tools و سپس Manage Libraries کلیک کنید.

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

 

پس از کلیک بر روی گزینه Manage Libraries، در صفحه ظاهر شده، در قسمت کادر جستجو، عبارت multi_channel_relay.h را جستجو نموده و کتابخانه مشخص شده در تصویر را نصب نمایید.

کتابخانه multi_channel_relay - دیجی اسپارک

 


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


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

شرح ورودی تابع
این تابع ارتباط بین برد آردوینو و ماژول را فراهم می کند. ورودی این ماژول آدرس I2C بوده و به صورت اختیاری است. ورودی اختیاری جهت تعیین آدرس    void begin(int address = 0x11)
به کمک این تابع می توانید آدرس I2C ماژول را عوض کنید. در ورودی اول آدرس جدید و ورودی دوم آدرس قدیم قرار می گیرد. اگر برای اولین بار آدرس را تعویض می کنید، آدرس قدیم همان آدرس پیشفرض(۰X11) است.  

ورودی اول آدرس جدید

ورودی دوم آدرس قدیمی

void changeI2CAddress(uint8_t new_addr, uint8_t old_addr)
به کمک این تابع می توانید کانال مد نظر خود را روشن کنید. شماره رله کانال در ورودی تابع قرار می گیرد. ورودی جهت تعیین شماره کانال   void turn_on_channel(uint8_t channel)
به کمک این تابع می توانید کانال مد نظر خود را خاموش کنید. شماره رله کانال در ورودی تابع قرار می گیرد. ورودی جهت تعیین شماره کانال     void turn_off_channel(uint8_t channel);
این تابع وضعیت روشن یا خاموش بودن رله را در خروجی قرار می دهد. خروجی یک عدد بین ۰ الی ۲۵۵ بوده که هر بیت آن وضعیت خاموش/روشن بودن رله را در بیت ها مشخص می کند. بدون ورودی uint8_t getChannelState(void)
این تابع آدرس های دستگاه های متصل به پورت I2C را اسکن کرده و در خروجی قرار می دهد. بدون ورودی uint8_t scanI2CDevice(void)

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

 


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


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

#include <multi_channel_relay.h>  //درج کتابخانه 

Multi_Channel_Relay relay;  //تعریف یک شی از کلاس کتابخانه 

void setup() {
    DEBUG_PRINT.begin(9600);
    while (!DEBUG_PRINT);
    // فعال سازی با آدرس  پیشفرض
    relay.begin(0x11);
    relay.turn_on_channel(1);  //فعال سازی رله شماره ۱
    delay(500);
    relay.turn_off_channel(1);  //خاموش کردن رله شماره ۱
    relay.turn_on_channel(2);  //روشن کردن رله شماره ۲
    delay(500);
    relay.turn_off_channel(2);  //خاموش کردن رله شماره ۲
    relay.turn_on_channel(3);  //روشن کردن رله شماره ۳
    delay(500);
    relay.turn_off_channel(3);  //خاموش کردن رله شماره ۳
    relay.turn_on_channel(4);  //روشن کردن رله شماره ۴
    delay(500);

}

void loop() {


}

 


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


لینک خرید برد آردوینو UNO، کلیک کنید

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

 


جمع بندی


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

 

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

 

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

معین صابری

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

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

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