در مجموعه آموزش های تحلیل و بررسی کتابخانه های آردوینو، این قسمت را به یک کتابخانه برای یک آی سی جالب و پرکاربرد اختصاص می دهیم. همانطور که اطلاع دارید، مالتی پلکسرها یکی از قطعات مهم و پرکابرد در پروژه های مختلف به شمار می روند. به کمک این قطعه شما می توانید چندین ورودی را محدود به یک خروجی کرده و با خط انتخاب، مسیر ورودی به خروجی را تعیین کنید. در این آموزش به تحلیل و بررسی کتابخانه آی سی (ماژول) TCA9548A می پردازیم. مطابق رویه معمول، ابتدا به شرح مختصری از این آی سی خواهیم پرداخت. سپس در ادامه، نحوه نصب کتابخانه و الزامات فنی و بردهای مورد پشتیبانی بررسی خواهند شد. در ادامه به بررسی توابع کلیدی و کاربردی کتابخانه خواهیم پرداخت. در نهایت با ارائه مثال، نحوه استفاده از توابع را مشاهده خواهیم کرد. در ادامه تحلیل کتابخانه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
ماژول مالتی پلکسر TCA9548A
همانطور که اطلاع دارید، یک مالتی پلکسر وظیفه ارسال ورودی تعیین شده به خروجی را بر عهده دارد. به عنوان مثال در یک مالتی پلکسر ۲ به ۱، دو ورودی و یک خروجی وجود دارد. در این قطعه ، یک خط انتخاب هم تعبیه شده است. در این قطعه، با اعمال پالس به خط انتخاب، یکی از ورودی ها به خروجی متصل می شود.
پیشتر در آموزشی به شرح کامل مالتی پلکسر پرداختیم. این آموزش با کلیک بر روی این لینک قابل مطالعه است. در کنار این، آی سی TCA9548A یک آی سی مالتی پلکسر ۸ به ۱ است. این آی سی می تواند سیگنال های پورت I2C را به صورت مالتی پلکس شده به خروجی ارسال کند. به عبارت دیگر، این آی سی دارای ۳ پایه انتخاب است. با انتخاب هر پایه مطابق جدول صحت مالتی پلکسر ۸ به ۱، یک جفت از دو پایه ورودی سیگنال و دیتا I2C در خروجی قرار می گیرند. این ماژول زمانی بسیار کابردی می شود که از تعدادی ماژول و سنسور I2C با آدرس های یکسان قصد استفاده داشته باشید؛ بدین ترتیب به کمک ماژول تداخل آدرس از بین خواهد رفت.
نصب کتابخانه TCA9548A
به منظور استفاده از کتابخانه، ابتدا می بایست آن را نصب کنیم. در این قسمت به نصب کتابخانه با جستجو در مخازن آردوینو می پردازیم. به همین منظور، ابتدا در نرم افزار آردوینو بر روی گزینه Tools و سپس Manage Libraries را کلیک کنید. پس از کلیک بر روی این گزینه، با تصویر زیر رو به می شوید. این منو کتابخانه های در دسترس را به شما نشان می دهد. شما نیز می توانید با جستجوی نام کتابخانه مورد نظر خود، آن را در مخازن آردوینو یافته و سپس نصب کنید.
مطابق فلش مشخص شده در تصویر فوق، در کادر جستجو عبارت TCA9568 را تایپ کنید. پس از چند لحظه با تصویر زیر رو به رو می شوید. در این مرحله، کتابخانه را با کلیک بر روی گزینه install، نصب کنید.
الزامات و نکات فنی کتابخانه TCA9548A
کتابخانه TCA9548A یک کتابخانه عمومی و مستقل از معماری پردازنده است. بنابراین این کتابخانه می تواند روی بردهای آردوینو با معماری AVR نظیر آردوینو UNO و بردهای ESP8266 و ESP32 اجرا شود. نکته مهم در اجرای این کتابخانه، دقت به رابط I2C است. این کتابخانه جهت تبادل داده از طریق ماژول با برد، از پورت سریال I2C سخت افزاری استفاده می کند.
توابع کلیدی و کاربردی کتابخانه TCA9548A
در این قسمت نوبت به تحلیل و بررسی توابع کلیدی و کاربردی کتابخانه می رسد. جدول زیر لیست توابع را به همراه شرح آن نشان می دهد.
شرح | ورودی | تابع |
این تابع، تابع سارنده کلاس کتابخانه است. ورودی نخست آدرس ماژول TCA و ورودی دوم اشاره گر به آدرس پورت I2C است. ورودی دوم اختیاری بوده و ورودی اول باید آدرس ماژول قرار داده شود. آدرس ماژول را می توانید در بازه ۰X70 الی ۰X77 انتخاب کنید. | ورودی اول آدرس ماژول
ورودی دوم پورت سریال سخت افزاری I2C |
TCA9548(const uint8_t deviceAddress, TwoWire *wire = &Wire) |
این تابع وظیفه بر قراری ارتباط بین ماژول و برد را برعهده داشته و به این شکل در فرمت ESP8266 یا ESP32 فراخوانی می شود. ورودی های اول و دوم شماره پایه جهت I2C هستند. ورودی سوم کانال را تعیین کرده که در حالت پیشفرض هیچ کانالی فعال نیست. | ورودی اول شماره پایه SDA
ورودی دوم شماره پایه SCL ورودی سوم عدد جهت فعال سازی کانال |
begin(uint8_t sda, uint8_t scl, uint8_t mask = 0x00); |
این تابع همان وظیفه تابع فوق را انجام داده ولی در فرمت بردهای آردوینو به این شکل ففراخوانی می شود. | ورودی جهت تعیین کانال | begin(uint8_t mask = 0x00) |
این تابع وظیفه کنترل اتصال را برعهده دارد. چنانچه ارتباط بین ماژول و برد برقرار باشد، خروجی TRUE خواهد شد. | بدون ورودی | bool isConnected(); |
این تابع آدرس ورودی را اسکن کرده و در صورت یافتن آن، خروجی TRUE خواهدشد. | ورودی جهت تعیین آدرس | bool isConnected(uint8_t address); |
این تابع شماره کانال (۱ الی ۷) را در ورودی گرفته و آن را فعال می کند. | ورودی جهت تعیین شماره کانال | void enableChannel(uint8_t channel) |
این تابع شماره کانال قرار گرفته در ورودی را غیر فعال می کند. | ورودی جهت تعیین شماره کانال | void disableChannel(uint8_t channel); |
این تابع در ورودی شماره کانال را به صورت MASK دریافت کرده و خروجی را فعال می کند. ورودی از ۰X00 تا ۰XFF بوده و هر بیت شماره یک کانال است. | ورودی جهت تعیین شماره کانال | void setChannelMask(uint8_t mask); |
این تابع شماره کانال را که به صورت MASK شده تعریف شده در خروجی قرار می دهد. | بدون ورودی | uint8_t getChannelMask(); |
اجرای نمونه برنامه
پس از بررسی توابع کلیدی و کاربردی، نوبت به اجرای یک نمونه برنامه می رسد. برای اجرای برنامه در محیط آردوینو، از گزینه File-Examples->tca9548_demo برنامه نمونه را اجرا کنید.
لوازم مورد نیاز
لینک خرید انواع برد آردوینو، کلیک کنید
لینک خرید انواع برد ESP، کلیک کنید
جمع بندی
در مجموعه آموزش های تحلیل و بررسی کتابخانه های آردوینو، این قسمت را به کتابخانه یک آی سی پرکاربرد اختصاص دادیم. آی سی TCA9548 یک آی سی فوق العاده کاربردی جهت راه اندازی چندین پورت I2C با آدرس یکسان است. این آسی به صورت مالتی پلکسر I2C برای ۸ کانال کار می کند. در این آموزش به معرفی و بررسی نصب کتابخانه پرداختیم. در کنار به تحلیل و برسی توابع کلیدی و کاربردی پرداخته شد. همچنین الزامات و نکات فنی کتابخانه، مورد بررسی قرار گرفت.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
با سلام و خسته نباشید اگه بیشتر از دو عدد مولتی پلکس tca9548a داشته باشیم آن وقت چطور آدرس بدهیم ، لطفاً برنامه نویسی آن را بگویید که دانلود بکنم پیدا نکردم از کتابخانه اردینو ، ممنون
سلام
میتوانید با کتابخانه i2c نرم افزاری دیگری را متصل کنید
با سلام ببخشید بیشتر. راهنمای میکنید ، بنده تحصیلات دانشگاهی ندارم کدنویسی بکنم در سطح پایین هستم ، میشه کدشو بفرستین ، کدنویسی TCA9548s اگه بیشتر از دوعدد شد برای یک عدد انجام دادم راحت هست ، ممنون
عرض احترام خدمت شما
ببخشید که در پاسخ دادن وقفه افتاده است. امکان ارسال کد نیست. برای این مورد باید خود دانش برنامه نویسی داشته باشید.