| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- /*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 <Wire.h>
- 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);
- }
|