#include #define MCP3428_ADDRESS 0x68 // Adresse I2C du MCP3428 #define VREF 3.3 // Tension de référence en volts void setup() { Wire.begin(); Serial.begin(9600); // Configuration du MCP3428 Wire.beginTransmission(MCP3428_ADDRESS); Wire.write(0x10); // Configurer en mode continu, 16 bits de résolution byte result = Wire.endTransmission(); if (result != 0) { Serial.println("Erreur lors de la configuration du MCP3428"); while (1); // Arrêt du programme en cas d'erreur } } void loop() { // Lecture des données des 4 canaux for (int i = 0; i < 4; i++) { Wire.beginTransmission(MCP3428_ADDRESS); Wire.write(0x80 | (i << 5)); // Sélectionner le canal et lancer une conversion byte result = Wire.endTransmission(); if (result != 0) { Serial.print("Erreur lors de la lecture du canal "); Serial.println(i + 1); continue; // Passer au canal suivant en cas d'erreur } delay(100); // Attendre la fin de la conversion (ajustez cette valeur en fonction de la vitesse de conversion configurée) Wire.requestFrom(MCP3428_ADDRESS, 3); // Lecture des 3 octets de données byte config = Wire.read(); byte byte2 = Wire.read(); byte byte1 = Wire.read(); int value = ((byte2 & 0x0F) << 8) | byte1; // Calcul de la valeur analogique // Conversion en tension float voltage = (value * VREF) / 32767.0; Serial.print("Canal "); Serial.print(i + 1); Serial.print(": "); Serial.print(value); Serial.print(" ("); Serial.print(voltage, 4); Serial.println(" V)"); } delay(1000); // Attendre 1 seconde avant de lire à nouveau les données }