آموزش پروتکل I2C با آردوینو

آموزش پروتکل I2C با آردوینو digispark

پروتکل I2C یک ارتباط سریال از طریق دو سیم می باشد که یک ارتباط سنکرون است و از یک کلاک خارجی تبعیت می‌کند. منظور از دو سیم این است که خط انتقال دیتا دوطرفه است ولی در پروتکل SPI یک خط فرستنده ویک خط گیرنده است. در ادامه با وب سایت مرجع آردوینو، دیجی اسپارک همراه باشید.

در این ارتباط هم یک دستگاه فرستنده و دستگاه دیگر گیرنده است. ابتدا یک درخواست از فرستنده برای گیرنده ارسال می شود گیرنده درخواست فرستده را با کد صفر پاسخ می دهد. اگر گیرنده با فرستنده دیگری در ارتباط باشد کد ( یک ) ارسال می کند. پایه ارسال و دریافت دیتا SDA و پایه ارسال کلاک SCL نامیده می شوند ود در ماژول های مختلف آردوینو به شرح زیر است :

BoardI2C / TWI pins
Uno, EthernetA4 (SDA), A5 (SCL)
Mega2560۲۰ (SDA), 21 (SCL)
Leonardo۲ (SDA), 3 (SCL)
Due۲۰ (SDA), 21 (SCL), SDA1, SCL1

 

 

برنامه :

 

 

شرح توابع کتابخانه Wire.h :

این تابع ارتباط را شروع می کند و گذرگاه به عنوان فرستنده یا گیرنده متصل می شود. فقط یکبار و درتابع setup() نوشته می شود.

 

 

پارامترها:

address: آدرس ۷بیتی گیرنده (اختیاری)؛ اگر مشخص نشود دستگاه به عنوان فرستنده متصل می شود.

این تابع برای کد دستگاه فرستنده است و درخواست ارسال دیتا را به گیرنده بیان می کند.

Syntax

Wire.requestFrom(address, quantity)
Wire.requestFrom(address, quantity, stop)

پارامترها:

address : آدرس ۷ بیتی از دستگاه گیرنده

:number تعداد بایت های ارسالی

stop : بیت توقف . بعد از ارسال پیام (بایت) درخواستی ؛ گذرگاه را آزاد میکند.

بایت ارسالی را از گیرنده به فرستنده بعداز فراخوانی تابع requestFrom() یا ارسال شده از فرستنده به گیرنده، می خواند.

تابع read() از کلاس Stream است.

تعداد بیت های قابل دسترس را برای بازیابی با تابع read() برمیگرداند.

این تابع در برنامه فرستنده بعد از فراخوانی requestFrom() و در برنامه گیرنده در تابع کنترلی onReceive() استفاده می شود.

این تابع از کلاس Stream است.

با تابعbeginTransmission() ارسال به گیرنده با آدرس داده شده شروع میشود. سپس تابع write() سری بایت های ارسالی را می نویسد. ( در برنامه گیرنده این تابع برای پاسخ به درخواست فرستنده استفاده می شود.)

Syntax

Wire.write(value)
Wire.write(string)
Wire.write(data, length)

value : برای ارسال یک بایت

string : برای ارسال یک سری از بایت

data : یک آرایه از بایت

length : تعداد بایت ارسالی

 

 

در ادامه به سایر توابع توضیح داده می شود.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *