PH.ino 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /*programe arduino qui :
  2. affiche "mettre la sonde dans la solution 6.86"
  3. qui attend un entrée de l'utilisateur,
  4. récupere une valeur en I2C adress 0x45 stocker dans une variable Y1
  5. affiche "mettre la sonde dans la solution 9.18"
  6. qui attend un entrée de l'utilisateur,
  7. récupere une valeur en I2C adress 0x45 stocker dans une variable Y2
  8. calcul la droite d'equation de la courbe avec X1 = 6.86 X2 = 9.18 et les variable Y1 et Y2*/
  9. #include <Wire.h>
  10. const int I2C_ADDR = 0x45; // Adresse I2C du périphérique
  11. const float X1 = 6.86; // Valeur de référence 1
  12. const float X2 = 9.18; // Valeur de référence 2
  13. float Y1, Y2; // Variables pour stocker les valeurs mesurées
  14. float a, b; // Coefficients de la droite
  15. void setup() {
  16. Serial.begin(9600); // Initialisation de la communication série
  17. Wire.begin(); // Initialisation de la bibliothèque Wire (I2C)
  18. }
  19. void loop() {
  20. // Afficher le message et attendre une entrée de l'utilisateur
  21. Serial.println("Mettre la sonde dans la solution 6.86");
  22. while (!Serial.available()) {
  23. // Attendre tant qu'aucune entrée n'est reçue
  24. }
  25. Serial.read(); // Lire et ignorer l'entrée
  26. // Récupérer la valeur en I2C
  27. Wire.requestFrom(I2C_ADDR, sizeof(float));
  28. while (Wire.available() < sizeof(float)) {
  29. // Attendre tant que les données ne sont pas disponibles
  30. }
  31. Wire.readBytes((char*)&Y1, sizeof(float));
  32. // Afficher le message et attendre une entrée de l'utilisateur
  33. Serial.println("Mettre la sonde dans la solution 9.18");
  34. while (!Serial.available()) {
  35. // Attendre tant qu'aucune entrée n'est reçue
  36. }
  37. Serial.read(); // Lire et ignorer l'entrée
  38. // Récupérer la valeur en I2C
  39. Wire.requestFrom(I2C_ADDR, sizeof(float));
  40. while (Wire.available() < sizeof(float)) {
  41. // Attendre tant que les données ne sont pas disponibles
  42. }
  43. Wire.readBytes((char*)&Y2, sizeof(float));
  44. // Calculer les coefficients de la droite
  45. a = (Y2 - Y1) / (X2 - X1);
  46. b = Y1 - a * X1;
  47. // Afficher les coefficients
  48. Serial.print("Droite : y = ");
  49. Serial.print(a, 6);
  50. Serial.print("x + ");
  51. Serial.println(b, 6);
  52. // Attendre un certain délai avant la prochaine itération
  53. delay(1000);
  54. }