V tem članku bomo preučili, kaj je vmesnik I2C (ay-tu-si, i-two-tse), kakšne so njegove značilnosti in kako delati z njim.
Potrebno je
- - Arduino;
- - digitalni potenciometer AD5171;
- - Svetleča dioda;
- - 220 ohmski upor;
- - 2 upora za 4,7 kOhm;
- - priključne žice.
Navodila
Korak 1
Protokol serijske komunikacije IIC (imenovan tudi I2C - Inter-Integrated Circuits) uporablja dve dvosmerni komunikacijski liniji za prenos podatkov, ki se imenuje vodilo SDA (serijski podatki) in vodilo SCL (serijska ura). Obstajata tudi dva daljnovoda. Vodila SDA in SCL se prek uporov potegnejo do napajalnega vodila.
V omrežju je vsaj en mojster, ki sproži prenos podatkov in generira sinhronizacijske signale. V omrežju so tudi podrejeni, ki prenašajo podatke na zahtevo poveljnika. Vsaka podrejena naprava ima edinstven naslov, na katerega jo naslovi glavni. Naslov naprave je naveden v potnem listu (podatkovni list). Na eno vodilo I2C je mogoče povezati do 127 naprav, vključno z več glavnimi enotami. Naprave je mogoče med delovanjem priključiti na vodilo, t.j. podpira vročo priključitev.
2. korak
Arduino za delo na vmesniku I2C uporablja dve vrati. Na primer, v Arduino UNO in Arduino Nano analogna vrata A4 ustrezajo SDA, analogna vrata A5 pa SCL.
Za druge modele plošč:
Arduino Pro in Pro Mini - A4 (SDA), A5 (SCL)
Arduino Mega - 20 (SDA), 21 (SCL)
Arduino Leonardo - 2 (SDA), 3 (SCL)
Arduino zaradi - 20 (SDA), 21 (SCL), SDA1, SCL1
3. korak
Za lažjo izmenjavo podatkov z napravami prek vodila I2C je za Arduino napisana standardna knjižnica "Wire". Ima naslednje funkcije:
start (naslov) - inicializacija knjižnice in povezava z vodilom I2C; če ni naveden noben naslov, se priključena naprava šteje za glavno; Uporablja se 7-bitno naslavljanje;
requestFrom () - uporablja ga poveljnik, da od podrejenega zahteva določeno število bajtov;
beginTransmission (naslov) - začetek prenosa podatkov v podrejeno napravo na določen naslov;
endTransmission () - zaključek prenosa podatkov na pomožni sistem;
write () - zapisovanje podatkov iz podrejenega kot odgovor na zahtevo;
available () - vrne število bajtov informacij, ki so na voljo za sprejem od podrejenega;
read () - prebere bajt, ki je prenesen iz pomožnega v glavnega ali iz glavnega v pomožni;
onReceive () - označuje funkcijo, ki jo je treba poklicati, ko podrejeni prejme prenos od glavne enote;
onRequest () - Označuje funkcijo, ki jo je treba poklicati, ko poveljnik prejme prenos od pomožnega.
4. korak
Poglejmo, kako delati z vodilom I2C z uporabo Arduina.
Najprej bomo sestavili vezje, kot je prikazano na sliki. Svetlost LED bomo nadzorovali z digitalnim potenciometrom AD5171 s 64 položaji, ki se poveže z vodilom I2C. Naslov, na katerega se bomo sklicevali na potenciometer, je 0x2c (44 v decimalnih mestih).
5. korak
Zdaj pa odprimo skico iz primerov knjižnice "Wire":
Datoteka -> Vzorci -> Žica -> digitalni potenciometer. Naložimo ga v spomin Arduino. Vklopimo ga.
Veste, svetlost LED se ciklično dvigne in nato nenadoma ugasne. V tem primeru potenciometer nadzorujemo z uporabo Arduina prek vodila I2C.