PH.ino 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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 "MCP3428.h"
  10. float a, b; // Coefficients de la droite
  11. void setup() {
  12. Serial.begin(9600); // Initialisation de la communication série
  13. Wire.begin(); // Initialisation de la bibliothèque Wire (I2C)
  14. Calibration();
  15. }
  16. /*
  17. fonction arduino calibration qui :
  18. demande a l'utilisateur Mettre la sonde dans la solution 4.01 vient lire grace a la fonction lecture(0) une Ref et avec lecture(1) - Ref = Y0
  19. demande a l'utilisateur Mettre la sonde dans la solution 6.86 vient lire grace a la fonction lecture(0) une Ref et avec lecture(1) - Ref = Y1
  20. demande a l'utilisateur Mettre la sonde dans la solution 9.18 vient lire grace a la fonction lecture(0) une Ref et avec lecture(1) - Ref = Y2
  21. et calcul la droite de la courbe avec Y0,Y1,Y2 et X0=4.01, X1=6.86, X2=9.18
  22. */
  23. void Calibration() {
  24. float X0 = 4.01; // Solution 4.01
  25. float X1 = 6.86; // Solution 6.86
  26. float X2 = 9.18; // Solution 9.18
  27. float Y0, Y1, Y2;
  28. float Ref;
  29. // Étape 1: Mettre la sonde dans la solution 4.01
  30. Serial.println("Mettez la sonde dans la solution 4.01");
  31. Serial.println("Appuyez sur une touche pour continuer...");
  32. while (!Serial.available()) {
  33. // Attente de l'entrée utilisateur
  34. }
  35. Serial.read(); // Lecture de l'entrée utilisateur pour la vider
  36. // Lecture de la référence
  37. Ref = lecture(0);
  38. Y0 = lecture(1) - Ref;
  39. // Étape 2: Mettre la sonde dans la solution 6.86
  40. Serial.println("Mettez la sonde dans la solution 6.86");
  41. Serial.println("Appuyez sur une touche pour continuer...");
  42. while (!Serial.available()) {
  43. // Attente de l'entrée utilisateur
  44. }
  45. Serial.read(); // Lecture de l'entrée utilisateur pour la vider
  46. // Lecture de la référence
  47. Ref = lecture(0);
  48. Y1 = lecture(1) - Ref;
  49. // Étape 3: Mettre la sonde dans la solution 9.18
  50. Serial.println("Mettez la sonde dans la solution 9.18");
  51. Serial.println("Appuyez sur une touche pour continuer...");
  52. while (!Serial.available()) {
  53. // Attente de l'entrée utilisateur
  54. }
  55. Serial.read(); // Lecture de l'entrée utilisateur pour la vider
  56. // Lecture de la référence
  57. Ref = lecture(0);
  58. Y2 = lecture(1) - Ref;
  59. // Calcul des coefficients de la droite de la courbe
  60. float denominator = (X1 - X0) * (X2 - X0) * (X2 - X1);
  61. a = ((Y2 - Y0) * (X1 - X0) - (Y1 - Y0) * (X2 - X0)) / denominator;
  62. b = (Y1 - Y0 - a * (X1 - X0)) / (X1 - X0);
  63. Serial.print("a : ");
  64. Serial.print(a);
  65. Serial.print("b : ");
  66. Serial.println(b);
  67. }
  68. void loop(){
  69. float Ref = lecture(0);
  70. float VPh = lecture(1)-Ref;
  71. float PH =(VPh-b) /a;
  72. Serial.print("Vph : ");
  73. Serial.print(VPh, 6);
  74. Serial.print(" PH : ");
  75. Serial.println(PH);
  76. }