I2C Va Arduino Interfeysi

Mundarija:

I2C Va Arduino Interfeysi
I2C Va Arduino Interfeysi

Video: I2C Va Arduino Interfeysi

Video: I2C Va Arduino Interfeysi
Video: Видеоуроки по Arduino. I2C и processing (7-я серия, ч1) 2024, May
Anonim

Ushbu maqolada biz I2C interfeysi (ay-tu-si, i-two-tse) nima ekanligini, uning xususiyatlari va u bilan qanday ishlashini ko'rib chiqamiz.

I2c interfeysi
I2c interfeysi

Bu zarur

  • - Arduino;
  • - raqamli potansiyometr AD5171;
  • - yorug'lik chiqaradigan diod;
  • - 220 ohm qarshilik;
  • - 4,7 kOm uchun 2 rezistor;
  • - simlarni ulash.

Ko'rsatmalar

1-qadam

IIC seriyali aloqa protokoli (I2C - Intertegrated Circuits deb ham ataladi) ma'lumotlarni uzatish uchun ikkita yo'nalishli aloqa liniyalaridan foydalanadi, ular SDA (Serial Data) shinasi va SCL (Serial Clock) shinasi deb nomlanadi. Shuningdek, ikkita elektr uzatish liniyalari mavjud. SDA va SCL avtobuslari rezistorlar orqali quvvat avtobusiga tortiladi.

Tarmoqda ma'lumotlarni uzatishni boshlaydigan va sinxronizatsiya signallarini ishlab chiqaradigan kamida bitta Master mavjud. Tarmoqda masterning talabiga binoan ma'lumotlarni uzatuvchi qullar ham mavjud. Har bir qul qurilmasining o'ziga xos manzili mavjud, unda usta unga murojaat qiladi. Qurilmaning manzili pasportda (ma'lumotlar sahifasida) ko'rsatilgan. Bir I2C avtobusiga 127 tagacha moslama ulanishi mumkin, shu jumladan bir nechta usta. Qurilmalar ish paytida avtobusga ulanishi mumkin, ya'ni. u issiq ulanishni qo'llab-quvvatlaydi.

I2C ulanish diagrammasi
I2C ulanish diagrammasi

2-qadam

Arduino I2C interfeysida ishlash uchun ikkita portdan foydalanadi. Masalan, Arduino UNO va Arduino Nano-da analog A4 port SDA ga, A5 analog port SCL ga to'g'ri keladi.

Boshqa taxta modellari uchun:

Arduino Pro va Pro Mini - A4 (SDA), A5 (SCL)

Arduino Mega - 20 (SDA), 21 (SCL)

Arduino Leonardo - 2 (SDA), 3 (SCL)

Arduino tufayli - 20 (SDA), 21 (SCL), SDA1, SCL1

Arduino pinlarini SDA va SCL avtobuslariga xaritalash
Arduino pinlarini SDA va SCL avtobuslariga xaritalash

3-qadam

I2C avtobusi orqali qurilmalar bilan ma'lumotlar almashinuvini engillashtirish uchun Arduino uchun standart "Wire" kutubxonasi yozildi. Uning quyidagi funktsiyalari mavjud:

start (manzil) - kutubxonani ishga tushirish va I2C avtobusiga ulanish; agar hech qanday manzil ko'rsatilmagan bo'lsa, u holda ulangan qurilma asosiy hisoblanadi; 7-bitli adreslash ishlatiladi;

requestFrom () - xo'jayin quldan ma'lum miqdordagi baytni so'rash uchun foydalanadi;

beginTransmission (manzil) - ma'lum bir manzil bo'yicha qul qurilmasiga ma'lumotlarni uzatish boshlanishi;

endTransmission () - ma'lumotni qulga uzatishni to'xtatish;

write () - so'rovga javoban quldan ma'lumotlarni yozish;

available () - quldan olish uchun mavjud bo'lgan bayt sonini qaytaradi;

o'qing () - quldan xo'jayinga yoki xo'jayindan qulga o'tkazilgan baytni o'qing;

onReceive () - qul xo'jayindan uzatishni qabul qilganda chaqiriladigan funktsiyani bildiradi;

onRequest () - xo'jayin qulidan uzatishni qabul qilganda chaqiriladigan funktsiyani bildiradi.

4-qadam

Keling, Arduino yordamida I2C avtobusi bilan qanday ishlashni ko'rib chiqamiz.

Birinchidan, biz rasmda ko'rsatilgandek sxemani yig'amiz. I2C avtobusiga ulanadigan AD5171 64 pozitsiyali raqamli potansiyometr yordamida LED yorug'ligini boshqaramiz. Potansiyometrga murojaat qiladigan manzil 0x2c (o'nlik bilan 44).

Raqamli potansiyometr va Arduino yordamida LED boshqaruv davri
Raqamli potansiyometr va Arduino yordamida LED boshqaruv davri

5-qadam

Endi "Sim" kutubxonasi misollaridan eskizni ochamiz:

Fayl -> Namunalar -> Sim -> raqamli_potentsiometr. Keling, uni Arduino xotirasiga yuklaymiz. Keling, uni yoqamiz.

Ko'ryapsizmi, LED yorug'ligi davriy ravishda ko'tariladi va keyin to'satdan o'chadi. Bunday holda biz potentsiometrni I2C avtobus orqali Arduino yordamida boshqaramiz.

Tavsiya: