En aquest article veurem què és una interfície I2C (ay-tu-si, i-two-tse), quines són les seves característiques i com treballar-hi.
És necessari
- - Arduino;
- - potenciòmetre digital AD5171;
- - Díode emissor de llum;
- - Resistència de 220 ohm;
- - 2 resistències de 4,7 kOhm;
- - cables de connexió.
Instruccions
Pas 1
El protocol de comunicació sèrie IIC (també anomenat I2C - Circuits inter-integrats) utilitza dues línies de comunicació bidireccionals per transferir dades, anomenades bus SDA (Serial Data) i bus SCL (Serial Clock). També hi ha dues línies elèctriques. Els autobusos SDA i SCL s’arrosseguen fins al bus de potència mitjançant resistències.
Hi ha almenys un mestre a la xarxa que inicia la transmissió de dades i genera senyals de sincronització. La xarxa també té esclaus que transmeten dades a petició del mestre. Cada dispositiu esclau té una adreça única a la qual s’adreça el mestre. L’adreça del dispositiu s’indica al passaport (full de dades). Es poden connectar fins a 127 dispositius a un bus I2C, inclosos diversos màsters. Els dispositius es poden connectar al bus durant el funcionament, és a dir, admet l'endollament en calent.
Pas 2
Arduino utilitza dos ports per treballar a la interfície I2C. Per exemple, a Arduino UNO i Arduino Nano, el port analògic A4 correspon a SDA, el port analògic A5 correspon a SCL.
Per a altres models de taulers:
Arduino Pro i 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
Pas 3
Per facilitar l'intercanvi de dades amb dispositius a través del bus I2C, s'ha creat una biblioteca estàndard "Wire" per a l'Arduino. Té les funcions següents:
begin (adreça): inicialització de la biblioteca i connexió al bus I2C; si no s'especifica cap adreça, el dispositiu connectat es considera el mestre; S'utilitza l'adreça de 7 bits;
requestFrom (): utilitzat pel mestre per sol·licitar un nombre determinat de bytes a l'esclau;
beginTransmission (adreça): el començament de la transferència de dades al dispositiu esclau en una adreça específica;
endTransmission (): finalització de la transmissió de dades a l'esclau;
write () - escrivint dades de l'esclau en resposta a una sol·licitud;
available (): retorna el nombre de bytes d’informació disponible per rebre de l’esclau;
read (): llegeix un byte transferit de l’esclau al mestre o del mestre a l’esclau;
onReceive (): indica la funció que s'ha de cridar quan l'esclau rep una transmissió del mestre;
onRequest (): indica una funció que s'ha de cridar quan el mestre rep una transmissió de l'esclau.
Pas 4
Vegem com treballar amb el bus I2C mitjançant Arduino.
En primer lloc, muntarem el circuit, tal com es mostra a la figura. Controlarem la brillantor del LED mitjançant el potenciòmetre digital AD5171 de 64 posicions, que es connecta al bus I2C. L'adreça a la qual ens referirem al potenciòmetre és 0x2c (44 en decimal).
Pas 5
Ara obrim un esbós dels exemples de la biblioteca "Wire":
Fitxer -> Mostres -> Cable -> potentiòmetre_digital. Carregem-lo a la memòria Arduino. Engegem-ho.
Ja veieu, la brillantor del LED augmenta cíclicament i de seguida s’apaga. En aquest cas, controlem el potenciòmetre mitjançant Arduino a través del bus I2C.