Wire

De Arduino
Saltar a: navegación, buscar

Descripción

La librería Wire.h le permite comunicarse con dispositivos I2C. Usa dos lineas: SDA (datos) y SCL (reloj).

Nota: A partir de Arduino 1.0, la biblioteca hereda de la clase Stream, lo que la hace compatible con otras bibliotecas de lectura/escritura. Debido a esto, send() y receive() han sido reemplazados por read() y write().


Placas aplicables

Arduino Pin SDA Pin SCL
UNO, Ethernet A4 A5
MEGA 20 21
Leonardo 2 3
Debido 20 21

Sintaxis


Métodos

Wirebegin()
Inicie la libreria Wire y únase al bus I2C como maestro o esclavo. Esto normalmente debería llamarse solo una vez.
Wire.beginTrasnmission()
Comience una transmisión al dispositivo esclavo I2C con la dirección dada. Posteriormente, coloque los bytes de cola para la transmisión con la función write() y transmítalos llamando a endTransmission().
Wire.read()
Recibe datos de un dispositivo esclavo en respuesta a una solicitud de un maestro, o pone en cola los bytes para la transmisión de un dispositivo maestro a esclavo.
Wire.write()
Envía datos de un dispositivo esclavo en respuesta a una solicitud de un maestro, o pone en cola los bytes para la transmisión de un dispositivo maestro a esclavo.
Wire.endTransmission()
Termina comunicación y libera pines.

Advertencias

Hay versiones de 7 y 8 bits de direcciones I2C. 7 bits identifican el dispositivo, y el octavo bit determina si se está escribiendo o leyendo. La libreria Wire usa direcciones de 7 bits en todo momento. Si tiene una hoja de datos o un código de muestra que usa una dirección de 8 bits, querrá soltar el bit bajo (es decir, desplazar el valor un bit hacia la derecha), obteniendo una dirección entre 0 y 127. Sin embargo, las direcciones de 0 a 7 no se usan porque están reservados, por lo que la primera dirección que se puede usar es 8. Tenga en cuenta que se necesita una resistencia de pull-up al conectar los pines SDA/SCL.

Ejemplo

#include <Wire.h> 
byte valor = 0 ; 

void setup () {
   Wire.begin();       //unirse al bus i2c (dirección opcional para el maestro) 
} 

void loop ( ) {
   Wire.beginTransmission(44); //transmitir al dispositivo N° 44 (0x2c) 
   //la dirección del dispositivo se especifica en la hoja de datos
   Cableado.write(byte (0x00));// envía un byte de instrucción
   Wire.write(valor);          //envía el valor del potenciómetro Byte
   Wire.endTransmission();     //deja de transmitir
   val ++;                     //incrementa el valor 
   if (valor == 64){             //si se alcanza la posición 64 (max)
      valor = 0 ;                 //comienza desde el valor más bajo 
   } 
   delay(500) ; 
}

Vea también

Referencias externas