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