Arduino > I2C
Contents (hide)
Arduino est distribué avec la logithèque Wire qui permet une communication I2C et Two Wire.
Contrôleur | Broches I2C/TWI |
---|---|
Uno et plus vieux | Broches analogiques A4 (SDA), A5 (SCL) |
Ethernet | Broches analogiques Analog 4 (SDA), Analog 5 (SCL) |
Mega2560 | Broches numériques 20 (SDA), 21 (SCL) |
Leonardo | Broches numériques 2 (SDA), 3 (SCL) |
Due | Broches numériques 20 (SDA), 21 (SCL), SDA1, SCL1 |
La logithèque Wire utilise un adressage à 7 bits pour l'écriture et la lecture.
Pour convertir une adresse I2C à 8 bist en adresse I2C à 7 bits, les bits doivent être décalés vers la droite ( >> 1 ).
Par exemple, le capteur TPA81 à l'adresse I2C 8 bits de 0xD0 (B11010000) par défaut. En décalant les bits vers la droite, l'adresse I2C devient 0x68 (B01101000):
TPA81 | Hexadécimal | Binaire | Décimal |
---|---|---|---|
Adresse à 8 bits | 0xD0 | B11010000 | 208 |
Adresse à 7 bits | 0x68 | B01101000 | 104 |
// Set register and write data Wire.beginTransmission(ADDRESS); Wire.send(REGISTRE); Wire.send(DATA); [...] Wire.endTransmission();
// Set register Wire.beginTransmission(ADDRESS); Wire.write(REGISTRE); Wire.endTransmission(); // Request data Wire.requestFrom(ADDRESS, NUMBER_OF_BYTES); // Wait for register's data while(Wire.available() < NUMBER_OF_BYTES) { ; // Do nothing } int i2c_data = Wire.read();