#include "E:\PH_Salinity\Soft\MCP3428\MCP3428.h"


#define MCP3428_ADDRESS 0x68 // Adresse I2C du MCP3428
#define VREFMCP 0.0000625// Tension de référence en volt

// Initialisation
void setup() {
	Serial.begin(9600);
  Wire.begin();

  Wire.requestFrom(MCP3428_ADDRESS, (uint8_t)1);
  if (!Wire.available()) {
    Serial.print("No device found at address ");
    while (1)
      ;
  }
}

void loop() {
	uint8_t i = 2;
	float tension = MCP3428_Read(i);
	Serial.print("     ");
	Serial.print(i);
	Serial.print(" Tension: ");
	Serial.print(tension, 6); // Affiche la tension avec 3 décimales
	Serial.println(" V");

	delay(10000); // Attendre 1 seconde avant la prochaine lecture
}

byte getChannelConfigByte(int channel) {
  byte configByte = 0x88; // Configuration par défaut pour le canal 1

  if (channel == 1) {
    configByte = 0xA8;
  } else if (channel == 2) {
    configByte = 0xC8;
  } else if (channel == 3) {
    configByte = 0xE8;
  }

  return configByte;
}

float MCP3428_Read(uint8_t channel) {
       
    Wire.beginTransmission(MCP3428_ADDRESS);
    Wire.write(getChannelConfigByte(channel));
    Wire.endTransmission();
    
    delay(200);
  byte config,byte1,byte2;
    while(1){
        Wire.requestFrom(MCP3428_ADDRESS, 3);
        byte2 = Wire.read();
        byte1 = Wire.read();
        config = Wire.read();
        if(config>>8==0) //tant qu'il a pas fini
            break;
    }

    int value = ((byte2) << 8) | byte1;
    return ((float)value * 62.5)/1000000;
}