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