/*programe arduino qui : affiche "mettre la sonde dans la solution 1" 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 2" qui attend un entrée de l'utilisateur, récupere une valeur en I2C adress 0x45 stocker dans une variable Y2 affiche "mettre la sonde dans la solution 3" qui attend un entrée de l'utilisateur, récupere une valeur en I2C adress 0x45 stocker dans une variable Y3 calcul la droite d'equation de la courbe avec X1 = 1025 X2 =1020 X3=1030 et les variable Y1 et Y2 et Y3*/ #include const int I2C_ADDR = 0x45; // Adresse I2C du périphérique float X1 = 1025; float X2 = 1020; float X3 = 1030; float Y1, Y2, Y3; float m, b; // Coefficients de la droite d'équation Y = mX + b 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 1"); 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 2"); 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)); // Afficher le message et attendre une entrée de l'utilisateur Serial.println("Mettre la sonde dans la solution 3"); 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*)&Y3, sizeof(float)); // Calculer la droite d'équation Y = mX + b float denom = (X1 - X2) * (X1 - X3) * (X2 - X3); m = (Y1 * (X2 - X3) - Y2 * (X1 - X3) + Y3 * (X1 - X2)) / denom; b = (Y1 * (X2 * X2 - X3 * X3) - Y2 * (X1 * X1 - X3 * X3) + Y3 * (X1 * X1 - X2 * X2)) / denom; // Afficher les résultats Serial.print("Droite d'équation : Y = "); Serial.print(m); Serial.print("X + "); Serial.println(b); // Attendre un certain délai avant la prochaine itération delay(1000); }