Rozhranie I2C A Arduino

Rozhranie I2C A Arduino
Rozhranie I2C A Arduino
Anonim

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.

Odporúča: