I2C I Arduino Sučelje

I2C I Arduino Sučelje
I2C I Arduino Sučelje
Anonim

U ovom ćemo članku pogledati što je I2C sučelje (ay-tu-si, i-two-tse), koje su njegove karakteristike i kako raditi s njim.

Neophodno je

  • - Arduino;
  • - digitalni potenciometar AD5171;
  • - dioda koja emituje svjetlost;
  • - otpornik 220 ohma;
  • - 2 otpornika za 4,7 kOhm;
  • - spojne žice.

Instrukcije

Korak 1

IIC protokol serijske komunikacije (također nazvan I2C - Inter-integrirani krugovi) koristi dvije dvosmjerne komunikacijske linije za prijenos podataka, nazvane SDA (serijski podaci) sabirnica i SCL (serijski sat) sabirnica. Postoje i dva dalekovoda. SDA i SCL sabirnice se preko otpornika izvlače do sabirnice za napajanje.

U mreži postoji barem jedan Master koji inicira prenos podataka i generira sinhronizacijske signale. Mreža takođe ima podređene uređaje koji prenose podatke na zahtjev master-a. Svaki podređeni uređaj ima jedinstvenu adresu na koju mu se master obraća. Adresa uređaja navedena je u pasošu (tablica podataka). Na jednu I2C sabirnicu može se povezati do 127 uređaja, uključujući nekoliko glavnih. Uređaji se tokom rada mogu povezati na sabirnicu, tj. podržava vruće uključivanje.

Korak 2

Arduino koristi dva porta za rad na I2C sučelju. Na primjer, u Arduino UNO i Arduino Nano analogni port A4 odgovara SDA, analogni port A5 odgovara SCL-u.

Za ostale modele ploča:

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

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

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

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

Korak 3

Kako bi se olakšala razmjena podataka s uređajima putem I2C magistrale, za Arduino je napisana standardna "Wire" biblioteka. Ima sljedeće funkcije:

start (adresa) - inicijalizacija knjižnice i povezivanje na I2C magistralu; ako nije navedena adresa, tada se povezani uređaj smatra glavnim; Koristi se 7-bitno adresiranje;

requestFrom () - koristi ga master za traženje određenog broja bajtova od pomoćnog uređaja;

beginTransmission (adresa) - početak prijenosa podataka na slave uređaj na određenoj adresi;

endTransmission () - prekid prijenosa podataka na slave;

write () - pisanje podataka iz podređenog kao odgovor na zahtjev;

available () - vraća broj bajtova informacija dostupnih za primanje od podređenog uređaja;

read () - čita bajt prebačen sa slave na master ili s master na slave;

onReceive () - označava funkciju koju treba pozvati kada slave prima prijenos od master-a;

onRequest () - Označava funkciju koju treba pozvati kada master primi prijenos od podređenog uređaja.

Korak 4

Pogledajmo kako raditi sa I2C sabirnicom koristeći Arduino.

Prvo ćemo sastaviti sklop, kao što je prikazano na slici. Kontrolirati ćemo svjetlinu LED diode pomoću AD5171 64-pozicijskog digitalnog potenciometra, koji se spaja na I2C sabirnicu. Adresa na koju ćemo se pozvati na potenciometar je 0x2c (44 u decimalu).

Korak 5

Otvorimo sada skicu iz primjera biblioteke "Wire":

Datoteka -> Uzorci -> Žica -> digitalni_potenciometar. Učitajmo ga u Arduino memoriju. Uključimo ga.

Vidite, svjetlina LED-a ciklički raste, a zatim se naglo gasi. U ovom slučaju, potenciometrom upravljamo pomoću Arduina preko I2C sabirnice.

Preporučuje se: