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

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

نوشته شده توسط معین صابری

محدودیت GPIO در بسیار از میکروکنترلرها، چالشی اساسی حساب می شود. به عنوان مثال فرض کنید با قرار دادن شیلدهای مختلف بر روی آردوینو UNO، تعداد کمی پایه GPIO باقی بماند. به عنوان یک مثال کلی تر، ماژول های ESP8266 پایه های GPIO بسیار کمی دارند. این موضوع سبب می شود که در پروژه های مختلف، محدودیت ورودی/خروجی، به عنوان یک چالش روند توسعه پروژه را مختل نماید. اما با وجود ماژول افزاینده GPIO با نام PCF8574، تمامی مشکلات فوق بر طرف می شوند. ماژول افزاینده تعداد پایه GPIO، یک ماژول فوق العاده کاربردی است. این ماژول که با پروتکل I2C پشتیبانی می کند، با اشغال تنها دو پایه از برد شما، ۸ پایه GPIO ورودی و خروجی ایجاد می نماید. جهت راه اندازی و کار با ماژول افزاینده GPIO، کتابخانه تحت پلتفرم آردوینو توسعه یافته است. از این رو روند توسعه پروژه ها به کمک این ماژول، تسریع یافته و تمرکز برنامه نویس بر روی قسمت های اصلی برنامه، قرار خواهد گرفت. در این آموزش به معرفی و بررسی این کتابخانه کاربردی می پردازیم. در ابتدا روش نصب آن را بررسی می کنیم. در ادامه به معرفی بردهای مورد پشتیبانی و الزامات فنی آن می پردازیم. پس از این مورد، به معرفی توابع کلیدی و کاربردی کتابخانه می پردازیم. در نهایت با ارائه مثالی از کاربرد، به بحث خاتمه می دهیم. در ادامه با مرجع تخصصی آردوینو به زبان فارسی ، دیجی اسپارک همراه باشید.

 


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


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

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

 

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

PCF8574.h library analysis

توجه: ممکن است این کتابخانه از پیش به صورت پیشفرض بر روی آردوینو شما نصب شده باشد، در این حالت مطابق تصویر فوق با گزینه update رو به رو می شوید. در این آموزش ورژن مورد استفاده ۰٫۹٫۰ است. 

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

 


بردهای مورد پشتیبانی و نکات فنی


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

PCF8574.h library analysis

در رابطه با بردها و میکروکنترلرهای مورد پشتیبانی این کتابخانه، می توان به موارد زیر نیز اشاره نمود.

  • بردهای ESP32
  • بردهای ESP8266
  • بردهای آردوینو نظیر UNO، MEGA ،NANO ،MICRO و….

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

 


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


در این قسمت به بررسی توابع کلیدی کتابخانه ماژول افزاینده GPIO با نام PCF8574 می پردازیم. در رابطه با توابع، در نظر بگیرید که ورودی ها از سمت چپ به راست، به ترتیب شماره های یک، دو، سه و… را به خود اختصاص می دهند. به عبارت دیگر، منظور از ورودی اول سمت چپ ترین ورودی بوده و سایر ورودی ها از ۲ به بعد، به خود شماره اختصاص می دهند.

نام تابع ورودی ها شرح
PCF8574(uint8_t address) ورودی از نوع بدون علامت ۸ بیتی این تابع، تابع سازنده کلاس کتابخانه ماژول است. ورودی این تابع آدرس i2c ماژول قرار می گیرد.
PCF8574(uint8_t address, uint8_t interruptPin,  void (*interruptFunction)() ) ورودی اول از نوع ۸ بیتی بدون علامت برای آدرس ماژول

ورودی دوم از نوع ۸ بیتی بدون علامت برای تعیین پایه وقفه

ورودی سوم معرفی تابع روتین وقفه

این تابع نیز، تابع سازنده اما با ورودی های بیشتر است. به کمک این تابع می توانید ماژول را با تعیین آدرس I2C در ورودی اول،  تعیین شماره پین وقفه بردی که ماژول به آن متصل می شود و تابع اجرای وقفه، پیکربندی کنید.
PCF8574(uint8_t address, uint8_t sda, uint8_t scl, uint8_t interruptPin,  void (*interruptFunction)() ) ورودی اول از نوع ۸ بیتی بدون علامت برای آدرس ماژول

ورودی دوم از نوع ۸ بیتی بدون علامت برای تعیین پایه SDA

ورودی سوم از نوع ۸ بیتی بدون علامت برای تعیین پایه SCL

ورودی چهارم از نوع بدون علامت ۸ بیتی برای تعیین پایه وقفه

ورودی پنجم معرفی تابع روتین وقفه

این تابع نیز تابع سازنده دیگری از این کتابخانه بوده که در مواقع لزوم از آن می توانید استفاده کنید.  این تابع با دریافت آدرس در ورودی نخست، تعیین پایه های ارتباط I2C در ورودی های دوم وسوم، تعیین شماره پین وقفه بردی که ماژول به آن متصل می شود و تابع اجرای وقفه، ماژول را پیکربندی می نماید.
void begin() بدون ورودی با فراخوانی این تابع، کتابخانه راه اندازی شده و ماژول آماده به کار می شود.
void pinMode(uint8_t pin, uint8_t mode, uint8_t output_start = HIGH) ورودی اول از نوع بدون علامت ۸ بیتی برای تعیین پایه

وروردی دوم از نوع ۸ بیت بدون علامت برای تعیین مد پایه

ورودی سوم از نوع بدون علامت ۸ بیتی برای تعیین وضعیت پیشفرض

به کمک این تابع می توانید وضعیت پایه های ۰ الی ۷ ماژول را تعیین تکلیف نمایید. برای این مورد، به کمک ورودی اول شماره پایه تعیین می شود. ورودی دوم وضعیت پایه به صورت زیر است:

OUTPUT:خروجی

ورودی:INPUT

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

 

void attachInterrupt() بدون ورودی به کمک این تابع، روتین وقفه برای پایه ای که پیشتر به عنوان وقفه تعیین شده، فعال می شود.
void detachInterrupt(); بدون ورودی این تابع وقفه پایه ها رو غیر فعال می کند.
uint8_t digitalRead(uint8_t pin) ورودی از نوع بدون علامت ۸ بیتی برای تعیین شماره پایه به کمک این تابع می توانیدوضعیت پایه ورودی را بخوانید. شماره این پایه در ورودی تابع قرار گرفته و به ازای یک،HIGH و به ازای صفر، LOW در خروجی ظاهر می شود.
bool digitalWrite(uint8_t pin, uint8_t value) ووردی اول از نوع بدون علامت ۸ بیتی شماره پایه

ورودی دوم از نوع بدون علامت ۸ بیتی برای مقدار

به کمک این تابع می توانید برای پایه های خروجی، مقدار صفر یا یک تعیین کنید. برای این منظور در ورودی اول شماره پایه(از ۰ الی ۷) و در ورودی دوم، مقدار HIGH برای یک منطقی و مقدار LOW برای صفر منطقی تعیین می شود.

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

 


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


در این قسمت به بررسی نمونه برنامه کاربردی کتابخانه PCF8574.h جهت راه اندازی ماژول PCF8574 می پردازیم. به همین منظور، در ابتدا یک برنامه بلینک جهت روشن و خاموش شدن یک LED را مشاهده می نمایید.

 

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

 

در نهایت، در برنامه آخر، وضعیت یک پایه ورودی را به صورت وقفه می خوانیم. در این برنامه، از آنجاییکه از برد آردوینو uno استفاده شده و پین های شماره ۱ یا ۲ مخصوص وقفه هستند، لذا از پایه ۲ به عنوان پایه وقفه استفاده کرده ایم. در این برنامه هرگاه وقفه رخ دهد، به معنای این موضوع بوده که یکی از پایه های ورودی ماژول PCF8574، تغییر وضعیت داده است.

 


جمع بندی


در این آموزش به تحلیل و بررسی کتابخانه ماژول PCF8574 پرداختیم. ماژول افزایش GPIO با نام PCF8574، یک ماژول فوق العاده کاربردی جهت افزایش تعداد پایه های GPIO است. به کمک این ماژول می توان ورودی و خروجی های بردها و ماژول های مختلف نظیر ماژول های ESP را افزایش داد. جهت راه اندازی و کار با این ماژول، کتابخانه تحت آردوینو توسعه یافته است. در این آموزش ضمن معرفی این کتابخانه، به الزمات فنی و بردهای مورد پشتیبانی آن پرداختیم. در ادامه به معرفی توابع کلیدی و کاربردی آن اشاره کردیم. در نهایت با ارائه سه مثال متنوع از نحوه کار با توابع کتابخانه ای، به بحث خاتمه دادیم.

 


لوازم متناسب با کتابخانه


ماژول افزایش GPIO با نام PCF8574

ماژول ESP8266-12E

برد آردوینو UNO

 

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

 

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

معین صابری

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

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

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