Imagen lectura i2c mal

Buenos días!.

Tengo un problemilla con un arduino uno trabajando como sensor I2C. A ver si me podéis echar una mano.

El codigo del arduino es el siguiente:

#include <Wire.h>

uint8_t SensorName[4] = {0x40, 0x3A, 0x3A, 0x8};

byte x[4]={0,0,0,0};//contiene el valor llegado

byte val=0;
byte a=0;
long ult_salida=0;

void setup() {
Serial.begin(9600);
Serial.println("Inicio");
Wire.begin(1);
Wire.onReceive(receiveEvent); //rutinas para cuando llegue algo
Wire.onRequest(requestEvent);
}

void loop() {

if (millis()-ult_salida>1000) //se mete en el if cada segundo
{
ult_salida=millis();

Serial.print("x:");
Serial.print(x[3], HEX);
Serial.print(x[2], HEX);
Serial.print(x[1], HEX);
Serial.println(x[0], HEX);
}

}

void receiveEvent(int len) {
for (int i=0; i<len; i++)
{
if (i<5)
{
x = Wire.read();

  • }*

  • else*

  • {*

  • Wire.read();*

  • }*

  • }*
    }
    void requestEvent() {

  • Wire.write(SensorName,3);*

}
[/quote]
Hago una lectura al Arduino de 3 bytes y debería devolver 0x40, 0x3A, 0x3A. Pero en este caso devuelve 0x20, 0xFF, 0xFF. Como se muestra en la siguiente imagen. (Si cambiamos Wire.write(SensorName,3); por Wire.write(SensorName,2); da sin ningún problema pidiendo 2 byte 0x40, 0x3A.)

Dropbox - Error - Simplify your life
Nose porque al leer 3 bytes SCL baja tensión despues de hacer el primer ACK con el byte de dirección+read.
Un saludo!.