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.
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.
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
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).
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.