Interfície I2C I Arduino

Taula de continguts:

Interfície I2C I Arduino
Interfície I2C I Arduino

Vídeo: Interfície I2C I Arduino

Vídeo: Interfície I2C I Arduino
Vídeo: Видеоуроки по Arduino. I2C и processing (7-я серия, ч1) 2024, De novembre
Anonim

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.

Interfície I2c
Interfície I2c

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

Esquema de connexió I2C
Esquema de connexió I2C

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

Assignació de pins Arduino a busos SDA i SCL
Assignació de pins Arduino a busos SDA i SCL

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

Circuit de control LED mitjançant potenciòmetre digital i Arduino
Circuit de control LED mitjançant potenciòmetre digital i Arduino

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.

Recomanat: