Në këtë artikull do të shohim se çfarë është një ndërfaqe I2C (ay-tu-si, i-two-tse), cilat janë tiparet e saj dhe si të punohet me të.
Është e nevojshme
- - Arduino;
- - potenciometër dixhital AD5171;
- - Diodë që lëshon dritë;
- - rezistencë 220 ohm;
- - 2 rezistencë për 4,7 kOhm;
- - telat lidhës.
Udhëzimet
Hapi 1
Protokolli i komunikimit serik IIC (i quajtur ndryshe I2C - Qarqet Ndër-Integruar) përdor dy linja komunikimi dydrejtimëshe për të transferuar të dhëna, të quajtura autobusi SDA (Të dhëna Seriale) dhe autobusi SCL (Ora Seriale). Ekzistojnë gjithashtu dy linja elektrike. Autobusët SDA dhe SCL tërhiqen deri në autobusin e energjisë përmes rezistencave.
Ka të paktën një Master në rrjet që fillon transmetimin e të dhënave dhe gjeneron sinjale sinkronizimi. Rrjeti gjithashtu ka skllevër që transmetojnë të dhëna me kërkesën e masterit. Çdo pajisje skllav ka një adresë unike në të cilën masteri e adreson atë. Adresa e pajisjes tregohet në pasaportë (fleta e të dhënave). Deri në 127 pajisje mund të lidhen me një autobus I2C, duke përfshirë disa master. Pajisjet mund të lidhen me autobusin gjatë operimit, d.m.th. ajo mbështet mbylljen e nxehtë.
Hapi 2
Arduino përdor dy porta për të punuar në ndërfaqen I2C. Për shembull, në Arduino UNO dhe Arduino Nano, porta analoge A4 korrespondon me SDA, porta analoge A5 korrespondon me SCL.
Për modelet e tjera të bordit:
Arduino Pro dhe 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
Hapi 3
Për të lehtësuar shkëmbimin e të dhënave me pajisjet përmes autobusit I2C, është shkruar një bibliotekë standarde "Wire" për Arduino. Ka funksionet e mëposhtme:
filloni (adresa) - inicializimi i bibliotekës dhe lidhja me autobusin I2C; nëse nuk është specifikuar asnjë adresë, atëherë pajisja e lidhur konsiderohet master; Përdoret adresimi 7-bit;
kërkesaFrom () - përdoret nga master për të kërkuar një numër të caktuar bajtesh nga skllavi;
startTransmission (adresa) - fillimi i transferimit të të dhënave në pajisjen skllav në një adresë specifike;
endTransmission () - përfundimi i transmetimit të të dhënave te skllavi;
shkruaj () - duke shkruar të dhëna nga skllavi në përgjigje të një kërkese;
në dispozicion () - kthen numrin e bajtëve të informacionit të disponueshëm për të marrë nga skllavi;
lexo () - lexo një bajt të transferuar nga skllavi te zotëria ose nga i zoti te skllavi;
onReceive () - tregon funksionin që duhet thirrur kur skllavi merr një transmetim nga master;
onRequest () - Tregon një funksion që do të thirret kur master merr një transmetim nga skllavi.
Hapi 4
Le të shohim se si të punojmë me autobusin I2C duke përdorur Arduino.
Së pari, ne do të mbledhim qarkun, siç tregohet në figurë. Ne do të kontrollojmë shkëlqimin e LED duke përdorur potenciometrin dixhital 64-pozicion AD5171, i cili lidhet me autobusin I2C. Adresa në të cilën do t’i referohemi potenciometrit është 0x2c (44 në dhjetore).
Hapi 5
Tani le të hapim një skicë nga shembujt e bibliotekës "Wire":
Skedar -> Shembuj -> Teli -> dixhital_potenciometër. Le ta ngarkojmë atë në kujtesën Arduino. Le ta ndezim.
E shihni, shkëlqimi i LED ngrihet në mënyrë ciklike, dhe pastaj papritmas shuhet. Në këtë rast, ne kontrollojmë potenciometrin duke përdorur Arduino përmes autobusit I2C.