„I2C“ir „Arduino“sąsaja

Turinys:

„I2C“ir „Arduino“sąsaja
„I2C“ir „Arduino“sąsaja

Video: „I2C“ir „Arduino“sąsaja

Video: „I2C“ir „Arduino“sąsaja
Video: Introduction to HT16K33 4 Digit LED Seven Segment Display with Arduino 2024, Gegužė
Anonim

Šiame straipsnyje mes pažvelgsime į tai, kas yra I2C sąsaja (ay-tu-si, i-two-tse), kokios jos savybės ir kaip su ja dirbti.

I2c sąsaja
I2c sąsaja

Tai būtina

  • - Arduino;
  • - skaitmeninis potenciometras AD5171;
  • - Šviesos diodas;
  • - 220 omų rezistorius;
  • - 2 rezistoriai 4,7 kOhm;
  • - jungiamieji laidai.

Nurodymai

1 žingsnis

IIC nuoseklaus ryšio protokolas (dar vadinamas I2C - Inter-Integrated Circuits) duomenims perduoti naudoja dvi dvikryptes ryšio linijas, vadinamas SDA (Serial Data) magistrale ir SCL (Serial Clock) magistrale. Taip pat yra dvi elektros linijos. SDA ir SCL magistralės per rezistorius traukiamos iki maitinimo magistralės.

Tinkle yra bent vienas magistras, kuris inicijuoja duomenų perdavimą ir generuoja sinchronizavimo signalus. Tinklas taip pat turi vergus, kurie perduoda duomenis šeimininko prašymu. Kiekvienas vergo įrenginys turi unikalų adresą, kuriuo šeimininkas kreipiasi. Prietaiso adresas nurodomas pase (duomenų lape). Prie vienos „I2C“magistralės galima prijungti iki 127 įrenginių, įskaitant kelis pagrindinius įrenginius. Prietaisus galima prijungti prie magistralės darbo metu, t. jis palaiko karšto prijungimo.

I2C prijungimo schema
I2C prijungimo schema

2 žingsnis

„Arduino“naudoja du prievadus, kad veiktų „I2C“sąsajoje. Pavyzdžiui, „Arduino UNO“ir „Arduino Nano“analoginis prievadas A4 atitinka SDA, analoginis prievadas A5 - SCL.

Kiti plokščių modeliai:

„Arduino Pro“ir „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

„Arduino“kaiščių susiejimas su SDA ir SCL magistralėmis
„Arduino“kaiščių susiejimas su SDA ir SCL magistralėmis

3 žingsnis

Kad būtų lengviau keistis duomenimis su įrenginiais per „I2C“magistralę, „Arduino“buvo parašyta standartinė „Wire“biblioteka. Jis atlieka šias funkcijas:

pradėti (adresas) - bibliotekos inicijavimas ir prisijungimas prie I2C magistralės; jei adresas nenurodytas, prijungtas įrenginys laikomas pagrindiniu; Naudojamas 7 bitų adresavimas;

requestFrom () - naudoja kapitonas reikalaudamas iš vergo tam tikro baitų skaičiaus;

startTransmission (adresas) - duomenų perdavimo į vergo įrenginį pradžia konkrečiu adresu;

endTransmission () - duomenų perdavimo vergui nutraukimas;

write () - duomenų rašymas iš vergo, atsakant į užklausą;

available () - pateikia informacijos, kurią galima gauti iš vergo, baitų skaičių;

skaityti () - perskaitykite baitą, perduotą iš vergo valdovui arba iš šeimininko vergui;

onReceive () - nurodo funkciją, kurią reikia iškviesti, kai vergas gauna perdavimą iš šeimininko;

onRequest () - nurodo funkciją, kurią reikia iškviesti, kai pagrindinis aparatas gauna perdavimą iš vergo.

4 žingsnis

Pažiūrėkime, kaip dirbti su „I2C“magistrale naudojant „Arduino“.

Pirma, mes surinksime grandinę, kaip parodyta paveikslėlyje. Šviesos diodo ryškumą valdysime naudodamiesi 64 padėčių skaitmeniniu potenciometru AD5171, kuris jungiasi prie I2C magistralės. Adresas, kuriuo nurodysime potenciometrą, yra 0x2c (44 po kablelio).

LED valdymo grandinė naudojant skaitmeninį potenciometrą ir „Arduino“
LED valdymo grandinė naudojant skaitmeninį potenciometrą ir „Arduino“

5 žingsnis

Dabar atidarykime „Wire“bibliotekos pavyzdžių eskizą:

Failas -> pavyzdžiai -> viela -> skaitmeninis potenciometras. Įkelkime jį į „Arduino“atmintį. Įjunkime.

Matote, šviesos diodo ryškumas cikliškai didėja ir staiga užgęsta. Šiuo atveju potenciometrą valdome naudodami „Arduino“per „I2C“magistralę.

Rekomenduojamas: