در این مقاله بررسی خواهیم کرد که رابط I2C (ay-tu-si ، i-two-tse) چیست ، ویژگی های آن چیست و نحوه کار با آن چیست.
لازم است
- - آردوینو ؛
- - پتانسیومتر دیجیتال AD5171؛
- - دیود ساطع نور؛
- - مقاومت 220 اهم ؛
- - 2 مقاومت برای 4.7 کیلو اهم
- - اتصال سیم ها
دستورالعمل ها
مرحله 1
پروتکل ارتباطات سریال IIC (که I2C - مدارهای مجتمع نیز نامیده می شود) از دو خط ارتباط دو طرفه برای انتقال داده استفاده می کند که به آنها گذرگاه SDA (داده سریال) و گذرگاه SCL (سریال ساعت) گفته می شود. همچنین دو خط برق وجود دارد. باس های SDA و SCL از طریق مقاومت ها به سمت باس قدرت کشیده می شوند.
حداقل یک استاد در شبکه وجود دارد که انتقال داده را آغاز می کند و سیگنال های هماهنگی را تولید می کند. این شبکه همچنین دارای بردهایی است که به درخواست استاد داده را انتقال می دهند. هر دستگاه slave یک آدرس منحصر به فرد دارد که استاد در آن آدرس می دهد. آدرس دستگاه در گذرنامه (صفحه داده) نشان داده شده است. حداکثر 127 دستگاه را می توان به یک گذرگاه I2C متصل کرد ، از جمله چندین مستر. دستگاه ها می توانند در هنگام کار به باس متصل شوند ، یعنی از اتصال داغ پشتیبانی می کند.
گام 2
آردوینو از دو پورت برای کار با رابط I2C استفاده می کند. به عنوان مثال ، در Arduino UNO و Arduino Nano ، پورت آنالوگ A4 با SDA مطابقت دارد ، پورت آنالوگ A5 با SCL مطابقت دارد.
برای سایر مدل های تخته:
Arduino Pro و Pro Mini - A4 (SDA) ، A5 (SCL)
آردوینو مگا - 20 (SDA) ، 21 (SCL)
آردوینو لئوناردو - 2 (SDA) ، 3 (SCL)
Arduino Due - 20 (SDA) ، 21 (SCL) ، SDA1 ، SCL1
مرحله 3
برای تسهیل تبادل داده ها با دستگاه ها از طریق گذرگاه I2C ، یک کتابخانه استاندارد "Wire" برای آردوینو نوشته شده است. این توابع زیر را دارد:
start (آدرس) - مقداردهی اولیه کتابخانه و اتصال به گذرگاه I2C ؛ اگر هیچ نشانی مشخص نشده باشد ، دستگاه متصل اصلی در نظر گرفته می شود. آدرس دهی 7 بیتی استفاده می شود.
requestFrom () - توسط استاد برای درخواست تعداد مشخصی بایت از بنده استفاده می شود.
startTransmission (آدرس) - آغاز انتقال داده به دستگاه برده در یک آدرس خاص ؛
endTransmission () - خاتمه انتقال داده به برده ؛
نوشتن () - نوشتن داده ها از بنده در پاسخ به درخواست ؛
available () - تعداد بایت اطلاعات موجود برای دریافت از برده را برمی گرداند.
read () - خواندن بایت منتقل شده از بنده به ارباب یا از ارباب به برده ؛
onReceive () - نشانگر تابعی است که باید فراخوانی شود وقتی که برده از master ارسال می کند.
onRequest () - تابعی را نشان می دهد که وقتی ارباب از بنده انتقالی می گیرد فراخوانی می شود.
مرحله 4
بیایید ببینیم که چگونه با استفاده از آردوینو با اتوبوس I2C کار کنیم.
ابتدا مدار را جمع می کنیم ، همانطور که در شکل نشان داده شده است. ما روشنایی LED را با استفاده از پتانسیومتر دیجیتال 64 موقعیت AD5171 ، که به باس I2C متصل می شود ، کنترل خواهیم کرد. آدرسی که در آن به پتانسیومتر مراجعه خواهیم کرد 0x2c است (44 عددی).
مرحله 5
حال بیایید طرحی از نمونه کتابخانه "Wire" را باز کنیم:
پرونده -> نمونه ها -> سیم -> پتانسیومتر_ دیجیتال. بیایید آن را در حافظه آردوینو بارگذاری کنیم. بگذارید آن را روشن کنیم.
می بینید که روشنایی LED به صورت چرخشی افزایش می یابد و پس از آن ناگهان خاموش می شود. در این حالت ، ما پتانسیومتر را با استفاده از آردوینو از طریق گذرگاه I2C کنترل می کنیم.