Wire.write()

Descripción
Escribe los datos en un dispositivo esclavo en respuesta a una petición de un maestro, o colas de bytes para la transmisión de un dispositivo maestro a un esclavo (en el medio de llamadas para begin.Transmisión () y endTransmission ()).

Sintaxis


Wire.write(value)
Wire.write(string)
Wire.write(data, length)



Parámetros


value: un valor a enviar como un solo byte string: ua cadena a enviar como una serie de bytes
data: una matriz de datos a enviar como bytes
length: el número de bytes a transmitir.



Retornos


byte: write() que devuelve el número de bytes escritos, aunque la lectura de ese número es opcional


Ejemplo



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

void setup()
{
  Wire.begin(); // se conecta al bus i2c 
}

void loop()
{
  Wire.beginTransmission(44); // transmite al dispositivo numero 44 (0x2c)
                 // la direccion del dispositivo es la especificada en la Hoja de Datos
  Wire.write(val);             //  envia un valor byte  
  Wire.endTransmission();     // detiene la transmision

  val++;        // incrementa el valor
  if (val == 64) // si se alcanza la posicion 64th (max)
  {
    val = 0;    // empieza de nuevo desde el valor más bajo
  }
  delay(500);
}


1 comentario:

  1. No he logrado simularla correctamente el el Proteus. Envio la direcc 0x51 y en el monitor I2c de Isis aparece 0xA2 (el doble de 0x51) pero responde el ACK, seguido va la direccion de escritura 0x01 y el dato, el dato se escribe correctamente pero en la direccion 101 de la eeprom y no en la 01. En algo estoy fallando y no me doy cuenta de ello. Agradezco si alguien puede darme una mano

    ResponderEliminar