V tomto článku se podíváme na to, co je to rozhraní I2C (ay-tu-si, i-two-tse), jaké jsou jeho vlastnosti a jak s ním pracovat.
Je to nutné
- - Arduino;
- - digitální potenciometr AD5171;
- - světelná dioda;
- - rezistor 220 ohmů;
- - 2 odpory pro 4,7 kOhm;
- - připojení vodičů.
Instrukce
Krok 1
Protokol sériové komunikace IIC (nazývaný také I2C - Inter-Integrated Circuits) používá k přenosu dat dvě obousměrné komunikační linky, které se nazývají sběrnice SDA (Serial Data) a sběrnice SCL (Serial Clock). K dispozici jsou také dvě elektrické vedení. Sběrnice SDA a SCL jsou vytahovány až k napájecí sběrnici přes rezistory.
V síti je alespoň jeden Master, který iniciuje přenos dat a generuje synchronizační signály. Síť má také podřízené jednotky, které přenášejí data na žádost nadřízeného. Každé podřízené zařízení má jedinečnou adresu, na kterou jej adresuje hlavní. Adresa zařízení je uvedena v pasu (datovém listu). K jedné sběrnici I2C lze připojit až 127 zařízení, včetně několika masterů. Zařízení lze připojit ke sběrnici během provozu, tj. podporuje připojení za provozu.
Krok 2
Arduino používá pro práci na rozhraní I2C dva porty. Například v Arduino UNO a Arduino Nano odpovídá analogový port A4 SDA, analogový port A5 SCL.
Pro ostatní modely desek:
Arduino Pro a Pro Mini - A4 (SDA), A5 (SCL)
Arduino Mega - 20 (SDA), 21 (SCL)
Arduino Leonardo - 2 (SDA), 3 (SCL)
Arduino Due - 20 (SDA), 21 (SCL), SDA1, SCL1
Krok 3
Pro usnadnění výměny dat se zařízeními po sběrnici I2C byla pro Arduino napsána standardní knihovna „Wire“. Má následující funkce:
start (adresa) - inicializace knihovny a připojení na sběrnici I2C; pokud není zadána žádná adresa, pak se připojené zařízení považuje za hlavní; Používá se 7bitové adresování;
requestFrom () - používá se k vyžádání určitého počtu bajtů od podřízeného;
beginTransmission (adresa) - začátek přenosu dat do podřízeného zařízení na konkrétní adresu;
endTransmission () - ukončení přenosu dat otrokovi;
write () - zápis dat z podřízeného zařízení v reakci na požadavek;
available () - vrátí počet bajtů informací dostupných pro příjem od podřízeného;
read () - načte bajt přenesený z podřízené jednotky do hlavní jednotky nebo z hlavní jednotky do podřízené jednotky;
onReceive () - označuje funkci, která má být vyvolána, když slave přijme přenos z masteru;
onRequest () - Označuje funkci, která má být volána, když master přijímá přenos od slave.
Krok 4
Podívejme se, jak pracovat se sběrnicí I2C pomocí Arduina.
Nejprve sestavíme obvod, jak je znázorněno na obrázku. Jas LED budeme řídit pomocí digitálního potenciometru se 64 pozicemi AD5171, který se připojuje ke sběrnici I2C. Adresa, na kterou budeme odkazovat na potenciometr, je 0x2c (44 v desítkové soustavě).
Krok 5
Nyní si otevřete náčrt z příkladů knihovny „Drát“:
Soubor -> Ukázky -> Drát -> digitální_potenciometr. Načtěte jej do paměti Arduino. Zapneme to.
Jas, že LED dioda cyklicky stoupá a najednou zhasne. V tomto případě ovládáme potenciometr pomocí Arduina přes sběrnici I2C.