Robot2025/Cerveau/I2C_Master_lib.ino

35 lines
979 B
C++

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