| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- #include <Wire.h>
- #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
- }
|