U ovom ćemo članku pogledati što je I2C sučelje (ay-tu-si, i-two-tse), koje su njegove značajke i kako s njim raditi.
Nužno je
- - Arduino;
- - digitalni potenciometar AD5171;
- - Dioda koja emitira svjetlo;
- - otpor od 220 ohma;
- - 2 otpora za 4,7 kOhm;
- - spojne žice.
Upute
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 dovlače se do sabirnice za napajanje kroz otpornike.
U mreži postoji barem jedan Master koji inicira prijenos podataka i generira sinkronizacijske signale. Mreža također ima podređene uređaje koji prenose podatke na zahtjev gospodara. Svaki podređeni uređaj ima jedinstvenu adresu na koju mu se master obraća. Adresa uređaja navedena je u putovnici (podatkovni list). Na jednu I2C sabirnicu može se povezati do 127 uređaja, uključujući nekoliko glavnih. Uređaji se tijekom rada mogu spojiti na sabirnicu, t.j. 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 priključak 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
3. korak
Kako bi se olakšala razmjena podataka s uređajima putem I2C sabirnice, za Arduino je napisana standardna "Wire" knjižnica. Ima sljedeće funkcije:
start (adresa) - inicijalizacija knjižnice i povezivanje na I2C sabirnicu; ako nije navedena adresa, tada se povezani uređaj smatra glavnim; Koristi se 7-bitno adresiranje;
requestFrom () - koristi ga master da zahtijeva određeni broj bajtova od slave-a;
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 koji se prenosi s slave na master ili s mastera na slave;
onReceive () - označava funkciju koja će se pozvati kad slave prima prijenos od master-a;
onRequest () - Označava funkciju koju treba pozvati kada master primi prijenos od slave-a.
4. korak
Pogledajmo kako raditi s I2C sabirnicom pomoću Arduina.
Prvo ćemo sastaviti sklop, kao što je prikazano na slici. Svjetlinom LED-a upravljat ćemo pomoću digitalnog potenciometra AD5171 s 64 položaja 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 onda se odjednom ugasi. U ovom slučaju, potenciometrom upravljamo pomoću Arduina preko I2C sabirnice.