size_t _I2C_write(uint8_t *data, size_t quantity)
{
    for(size_t i = 0; i < quantity; ++i) {
        if(!WIRE.write(data[i])) {
            return i;
        }
    }
    return quantity;

}

uint8_t I2C_ecrire_registre(int adresse_i2c, uint adresse_registre, unsigned char * donnees, uint taille_donnees){
  // Ecriture
  WIRE.beginTransmission(adresse_i2c);
  WIRE.write(adresse_registre);
  _I2C_write(donnees, taille_donnees);
  return WIRE.endTransmission(true);
}

uint8_t I2C_lire_registre(int adresse_i2c, uint adresse_registre, unsigned char * donnees_recues, uint taille_donnees){
  int status;
  byte temp;
  WIRE.beginTransmission(adresse_i2c);
  WIRE.write(adresse_registre);
  status = WIRE.endTransmission(true);

  WIRE.requestFrom(adresse_i2c, taille_donnees + 1);
  // ceci contient l'adresse
  if(adresse_i2c == I2C_SLAVE_chassi){
    Wire.readBytes(&temp, 1);
  }
  // Et ceci les données
  Wire.readBytes(donnees_recues, taille_donnees);
  return status;
}