Kiolesura Cha I2C Na Arduino

Orodha ya maudhui:

Kiolesura Cha I2C Na Arduino
Kiolesura Cha I2C Na Arduino

Video: Kiolesura Cha I2C Na Arduino

Video: Kiolesura Cha I2C Na Arduino
Video: Arduino I2C связь между контроллерами 2024, Mei
Anonim

Katika nakala hii tutaangalia ni nini interface ya I2C (ay-tu-si, i-two-tse) ni nini, ni vipi sifa zake na jinsi ya kufanya kazi nayo.

Kiolesura cha I2c
Kiolesura cha I2c

Ni muhimu

  • - Arduino;
  • - potentiometer ya dijiti AD5171;
  • - Diode inayotoa nuru;
  • - kinzani cha 220 ohm;
  • - vipinga 2 kwa 4.7 kOhm;
  • - kuunganisha waya.

Maagizo

Hatua ya 1

Itifaki ya mawasiliano ya serial ya IIC (pia inaitwa I2C - Miduara Iliyounganishwa) hutumia laini mbili za mawasiliano za pande mbili kuhamisha data, inayoitwa basi ya SDA (Serial Data) na basi ya SCL (Serial Clock). Pia kuna laini mbili za umeme. Basi za SDA na SCL zinavutwa hadi kwenye basi ya umeme kupitia vipingaji.

Kuna angalau Mwalimu mmoja kwenye mtandao ambaye huanzisha usambazaji wa data na hutoa ishara za maingiliano. Mtandao pia una watumwa ambao hupitisha data kwa ombi la bwana. Kila kifaa cha mtumwa kina anwani ya kipekee ambayo bwana huihutubia. Anwani ya kifaa imeonyeshwa kwenye pasipoti (data-data). Hadi vifaa 127 vinaweza kushikamana na basi moja ya I2C, pamoja na mabwana kadhaa. Vifaa vinaweza kushikamana na basi wakati wa operesheni, i.e. inasaidia kuziba moto.

Mchoro wa uunganisho wa I2C
Mchoro wa uunganisho wa I2C

Hatua ya 2

Arduino hutumia bandari mbili kufanya kazi kwenye kiolesura cha I2C. Kwa mfano, katika Arduino UNO na Arduino Nano, bandari ya Analog A4 inafanana na SDA, bandari ya Analog A5 inafanana na SCL.

Kwa mifano mingine ya bodi:

Arduino Pro na Pro Mini - A4 (SDA), A5 (SCL)

Arduino Mega - 20 (SDA), 21 (SCL)

Arduino Leonardo - 2 (SDA), 3 (SCL)

Arduino Kutokana - 20 (SDA), 21 (SCL), SDA1, SCL1

Ramani ya pini za Arduino kwa mabasi ya SDA na SCL
Ramani ya pini za Arduino kwa mabasi ya SDA na SCL

Hatua ya 3

Ili kuwezesha ubadilishaji wa data na vifaa kupitia basi ya I2C, maktaba ya kawaida ya "Waya" imeandikwa kwa Arduino. Inayo kazi zifuatazo:

anza (anwani) - uanzishaji wa maktaba na unganisho kwa basi ya I2C; ikiwa hakuna anwani iliyoainishwa, basi kifaa kilichounganishwa kinachukuliwa kuwa bwana; Anwani ya 7-bit hutumiwa;

ombiKutoka () - inayotumiwa na bwana kuomba idadi fulani ya ka kutoka kwa mtumwa;

Anza Uwasilishaji (anwani) - mwanzo wa uhamishaji wa data kwenye kifaa cha watumwa kwenye anwani maalum;

mwisho Uwasilishaji () - kukomesha usambazaji wa data kwa mtumwa;

andika () - kuandika data kutoka kwa mtumwa kwa kujibu ombi;

inapatikana () - inarudi idadi ya ka za habari zinazopatikana kwa kupokea kutoka kwa mtumwa;

soma () - soma kahawia iliyohamishwa kutoka kwa mtumwa kwenda kwa bwana au kutoka kwa bwana kwenda kwa mtumwa;

onReceive () - inaonyesha kazi inayoitwa wakati mtumwa anapokea maambukizi kutoka kwa bwana;

onRequest () - Inaonyesha kazi ya kuitwa wakati bwana anapokea maambukizi kutoka kwa mtumwa.

Hatua ya 4

Wacha tuone jinsi ya kufanya kazi na basi ya I2C kwa kutumia Arduino.

Kwanza, tutakusanya mzunguko, kama inavyoonyeshwa kwenye takwimu. Tutadhibiti mwangaza wa LED kwa kutumia AD5171 64-nafasi ya potentiometer ya dijiti, inayounganisha na basi ya I2C. Anwani ambayo tutarejelea potentiometer ni 0x2c (44 kwa desimali).

Mzunguko wa kudhibiti LED kutumia potentiometer ya dijiti na Arduino
Mzunguko wa kudhibiti LED kutumia potentiometer ya dijiti na Arduino

Hatua ya 5

Sasa wacha tufungue mchoro kutoka kwa mifano ya maktaba ya "Waya":

Faili -> Sampuli -> Waya -> digital_potentiometer. Wacha tuipakie kwenye kumbukumbu ya Arduino. Wacha tuiwashe.

Unaona, mwangaza wa LED huinuka kwa mzunguko, na kisha ghafla hutoka. Katika kesi hii, tunadhibiti potentiometer kutumia Arduino kupitia basi ya I2C.

Ilipendekeza: