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.