I2C és Arduino Interfész

Tartalomjegyzék:

I2C és Arduino Interfész
I2C és Arduino Interfész

Videó: I2C és Arduino Interfész

Videó: I2C és Arduino Interfész
Videó: Видеоуроки по Arduino. I2C и processing (7-я серия, ч1) 2024, Lehet
Anonim

Ebben a cikkben megnézzük, mi az I2C interfész (ay-tu-si, i-two-tse), mik a jellemzői és hogyan kell vele dolgozni.

I2c interfész
I2c interfész

Szükséges

  • - Arduino;
  • - AD5171 digitális potenciométer;
  • - Fénykibocsátó dióda;
  • - 220 ohmos ellenállás;
  • - 2 ellenállás 4,7 kOhm-ra;
  • - összekötő vezetékek.

Utasítás

1. lépés

Az IIC soros kommunikációs protokoll (más néven I2C - Inter-Integrated Circuits) két kétirányú kommunikációs vonalat használ az adatátvitelhez, az úgynevezett SDA (Serial Data) busznak és az SCL (Serial Clock) busznak. Két elektromos vezeték is van. Az SDA és SCL buszokat az ellenállásokon keresztül húzzák fel a villamos buszra.

Legalább egy Master van a hálózatban, amely kezdeményezi az adatátvitelt és generál szinkronizációs jeleket. A hálózatnak vannak olyan rabszolgái is, amelyek a master kérésére továbbítják az adatokat. Minden szolga eszköznek egyedi címe van, amelyen a master megcímezi. Az eszköz címét az útlevél (adatlap) tartalmazza. Egy I2C buszra akár 127 eszköz is csatlakoztatható, köztük több master is. Az eszközök működés közben csatlakoztathatók a buszhoz, azaz támogatja a forró dugaszolást.

I2C csatlakozási ábra
I2C csatlakozási ábra

2. lépés

Az Arduino két portot használ az I2C interfészen való munkához. Például az Arduino UNO és az Arduino Nano esetében az A4 analóg port megfelel az SDA-nak, az A5 analóg port pedig az SCL-nek.

Más lapmodellek esetében:

Arduino Pro és 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

Az Arduino csapok hozzárendelése az SDA és az SCL buszokhoz
Az Arduino csapok hozzárendelése az SDA és az SCL buszokhoz

3. lépés

Az I2C buszon keresztüli eszközökkel történő adatcsere megkönnyítése érdekében az Arduino számára egy szabványos "Wire" könyvtárat írtak. A következő funkciókkal rendelkezik:

kezdődik (cím) - a könyvtár inicializálása és csatlakozás az I2C buszhoz; ha nincs megadva cím, akkor a csatlakoztatott eszköz számít masternek; 7 bites címzést használnak;

requestFrom () - a mester arra használja, hogy bizonyos számú bájtot kérjen a rabszolgától;

startTransmission (cím) - az adatátvitel kezdete a slave eszközre egy adott címen;

endTransmission () - az adatátvitel befejezése a rabszolgához;

write () - adatok írása a rabszolgától kérésre válaszul;

elérhető () - a rabszolgától fogadásra rendelkezésre álló információk bájtjainak számát adja vissza;

read () - a rabszolgától a mesterig vagy a mestertől a rabszolgáig átvitt bájt olvasása;

onReceive () - azt a funkciót jelöli, amelyet akkor kell meghívni, amikor a szolga kap egy adást a mastertől;

onRequest () - Azt a funkciót jelöli, amelyet akkor kell meghívni, amikor a master átvesz egy adást a slave-től.

4. lépés

Lássuk, hogyan kell működni az I2C busszal az Arduino segítségével.

Először összeállítjuk az áramkört, az ábra szerint. A LED fényerejét az I5C buszhoz csatlakozó AD5171 64 pozíciós digitális potenciométerrel fogjuk szabályozni. A cím, amelyen a potenciométerre hivatkozunk, 0x2c (44 tizedesjegyben).

LED vezérlő áramkör digitális potenciométer és Arduino segítségével
LED vezérlő áramkör digitális potenciométer és Arduino segítségével

5. lépés

Most nyissunk meg egy vázlatot a "Wire" könyvtár példáiból:

Fájl -> Minták -> Huzal -> digitális_potenciométer. Töltsük be az Arduino memóriájába. Kapcsoljuk be.

A LED fényereje ciklikusan növekszik, majd hirtelen kialszik. Ebben az esetben az Arduino segítségével az I2C buszon keresztül vezéreljük a potenciométert.

Ajánlott: