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);
}
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