/*programe arduino qui :
affiche "mettre la sonde dans la solution 6.86"
qui attend un entrée de l'utilisateur,
récupere une valeur en I2C adress 0x45 stocker dans une variable Y1
affiche "mettre la sonde dans la solution 9.18"
qui attend un entrée de l'utilisateur,
récupere une valeur en I2C adress 0x45 stocker dans une variable Y2

calcul la droite d'equation de la courbe avec X1 = 6.86 X2 = 9.18 et les variable Y1 et Y2*/

#include <Wire.h>

const int I2C_ADDR = 0x45;  // Adresse I2C du périphérique
const float X1 = 6.86;     // Valeur de référence 1
const float X2 = 9.18;     // Valeur de référence 2

float Y1, Y2;              // Variables pour stocker les valeurs mesurées
float a, b;                // Coefficients de la droite

void setup() {
  Serial.begin(9600);      // Initialisation de la communication série
  Wire.begin();            // Initialisation de la bibliothèque Wire (I2C)
}

void loop() {
  // Afficher le message et attendre une entrée de l'utilisateur
  Serial.println("Mettre la sonde dans la solution 6.86");
  while (!Serial.available()) {
    // Attendre tant qu'aucune entrée n'est reçue
  }
  Serial.read();  // Lire et ignorer l'entrée

  // Récupérer la valeur en I2C
  Wire.requestFrom(I2C_ADDR, sizeof(float));
  while (Wire.available() < sizeof(float)) {
    // Attendre tant que les données ne sont pas disponibles
  }
  Wire.readBytes((char*)&Y1, sizeof(float));

  // Afficher le message et attendre une entrée de l'utilisateur
  Serial.println("Mettre la sonde dans la solution 9.18");
  while (!Serial.available()) {
    // Attendre tant qu'aucune entrée n'est reçue
  }
  Serial.read();  // Lire et ignorer l'entrée

  // Récupérer la valeur en I2C
  Wire.requestFrom(I2C_ADDR, sizeof(float));
  while (Wire.available() < sizeof(float)) {
    // Attendre tant que les données ne sont pas disponibles
  }
  Wire.readBytes((char*)&Y2, sizeof(float));

  // Calculer les coefficients de la droite
  a = (Y2 - Y1) / (X2 - X1);
  b = Y1 - a * X1;

  // Afficher les coefficients
  Serial.print("Droite : y = ");
  Serial.print(a, 6);
  Serial.print("x + ");
  Serial.println(b, 6);

  // Attendre un certain délai avant la prochaine itération
  delay(1000);
}
