V tomto článku sa pozrieme na to, čo je rozhranie I2C (ay-tu-si, i-two-tse), aké sú jeho vlastnosti a ako s ním pracovať.
Je to nevyhnutné
- - Arduino;
- - digitálny potenciometer AD5171;
- - Dióda vyžarujúca svetlo;
- - rezistor 220 ohmov;
- - 2 odpory pre 4,7 kOhm;
- - spojovacie vodiče.
Inštrukcie
Krok 1
Sériový komunikačný protokol IIC (tiež nazývaný I2C - Inter-Integrated Circuits) používa na prenos dát dve obojsmerné komunikačné linky, ktoré sa nazývajú zbernica SDA (Serial Data) a zbernica SCL (Serial Clock). K dispozícii sú tiež dve elektrické vedenia. Zbernice SDA a SCL sú cez odpor odpájané až k výkonovej zbernici.
V sieti je aspoň jeden Master, ktorý iniciuje prenos dát a generuje synchronizačné signály. Sieť má aj podriadené jednotky, ktoré prenášajú údaje na žiadosť nadriadeného. Každé podradené zariadenie má jedinečnú adresu, na ktorú ho adresuje hlavný server. Adresa zariadenia je uvedená v pase (údajovom liste). Na jednu I2C zbernicu je možné pripojiť až 127 zariadení, vrátane niekoľkých masterov. Zariadenia je možné pripojiť na zbernicu počas prevádzky, t.j. podporuje pripojenie za tepla.
Krok 2
Arduino používa na prácu na rozhraní I2C dva porty. Napríklad v Arduino UNO a Arduino Nano zodpovedá analógový port A4 SDA, analógový port A5 SCL.
Pre ostatné modely dosiek:
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
Na uľahčenie výmeny údajov so zariadeniami cez zbernicu I2C je pre Arduino napísaná štandardná knižnica „Wire“. Má nasledujúce funkcie:
start (adresa) - inicializácia knižnice a pripojenie na zbernicu I2C; ak nie je zadaná adresa, potom sa pripojené zariadenie považuje za hlavné; Používa sa 7-bitové adresovanie;
requestFrom () - používa ho hlavný server na vyžiadanie určitého počtu bajtov od podradeného zariadenia;
beginTransmission (adresa) - začiatok prenosu dát do podriadeného zariadenia na konkrétnu adresu;
endTransmission () - ukončenie prenosu dát na podriadeného;
write () - zápis dát z podriadeného zariadenia ako odpoveď na požiadavku;
available () - vráti počet bajtov informácií dostupných pre príjem od podriadeného;
read () - načíta bajt prenesený z podradenej jednotky do hlavnej jednotky alebo z hlavnej jednotky do podriadenej jednotky;
onReceive () - označuje funkciu, ktorá sa má volať, keď podriadený prijíma prenos z hlavnej jednotky;
onRequest () - označuje funkciu, ktorá sa má zavolať, keď nadradený prijíma prenos od podriadeného.
Krok 4
Pozrime sa, ako pracovať so zbernicou I2C pomocou Arduina.
Najskôr zostavíme obvod, ako je to znázornené na obrázku. Jas LED budeme riadiť pomocou 64-polohového digitálneho potenciometra AD5171, ktorý sa pripája na zbernicu I2C. Adresa, na ktorú sa budeme odvolávať na potenciometer, je 0x2c (44 v desatinnej čiarke).
Krok 5
Teraz si otvoríme náčrt z príkladov knižnice „Drôt“:
File -> Samples -> Wire -> digital_potentiometer. Načítajme to do pamäte Arduino. Zapnime to.
Uvidíte, že jas LED cyklicky stúpa a potom náhle zhasne. V takom prípade ovládame potenciometer pomocou Arduina cez zbernicu I2C.