float impossible dans RPC donc weight1 et 2 en float > f0 et f1 en int pour sa: f0 = (int) weight1;....

Dependencies:   mbed HTTPServer EthernetNetIf HX711 TextLCD RPCInterface

Files at this revision

API Documentation at this revision

Comitter:
mbedyp
Date:
Sat Jun 11 22:21:00 2022 +0000
Parent:
5:3754211a1b5b
Commit message:
float impossible dans RPC donc weight1 et 2 en float > f0 et f1 en int; pour sa: f0 = (int) weight1;....

Changed in this revision

HTTPServerExample.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/HTTPServerExample.cpp	Sat Jun 11 21:11:21 2022 +0000
+++ b/HTTPServerExample.cpp	Sat Jun 11 22:21:00 2022 +0000
@@ -15,21 +15,21 @@
 // LCD and Joystick Setting
 TextLCD lcd(p8, p10, p11, p5, p6, p7); // rs, e, d4-d7
          //rs   e    d4  d5   d6    d7          
+DigitalOut RW(p9);
 
+//LED MBED
 DigitalOut led1(LED1);
 DigitalOut led2(LED2);
 DigitalOut led3(LED3);
 DigitalOut led4(LED4);
 
-DigitalOut RW(p9);
+//LED BICOLORE
+DigitalOut ledB1(p29); // SI 1 LED ROUGE
+DigitalOut ledB2(p30); // SI 1 LED VERT
+
 //AnalogIn Pot1(p19, "pot1");
 //AnalogIn Pot2(p20, "pot2");
 
-//LED BICOLORE
-//DigitalOut ledB1(p29); // SI 1 LED ROUGE
-//DigitalOut ledB2(p30); // SI 1 LED VERT
-DigitalOut myledR(p30); // LED Rouge
-DigitalOut myledV(p29); // LED Vert
 
 // BOUTON
 DigitalIn Up(p12);
@@ -50,21 +50,31 @@
 
 //int pot1 ; a renplacer
 //int pot2; a remplacer 
-int MOI  = 0; // en kg*cm2
-int f0  = 256 ; //256 ; // en g
-int f1 = 657 ; //657 ;  // en g
-int m = 0 ; // en g
-int l1 = 45 ; // en cm
-int lg = 0 ; // en cm
-int menu = 0;
-int tempo_saisie = 130 ;
-
 
 float calibration_factor1 = 2325; //2325 // -7050 worked for my 440lb max scale setup
 float calibration_factor2 = 2178; //2178
 int averageSamples = 5; //NOMBRE DE MESURE
-float weight1 = 0; // F1
-float weight2 = 0; // F0
+
+int moyenneClick = 0;
+int boucleExecute = 0;
+
+int menu = 0;
+
+float m = 0; //MASSE en g
+float lg = 0; //LG en cm
+float MOI = 0; // MOI en kg*cm2
+float massMoy = 0; //Moyenne de la masse a chaque points
+
+float weight1 = 0; // F0
+float weight2 = 0; // F1
+
+int f0 = 0;
+int f1 = 0;
+
+//SWINGWEIGHT
+float convertionInches = 2.54; // 1 inches = 2,54 centimètre
+float calculInches = 0; // Variable pour effectuer des calculs
+float SW = 0; // Variable résultat SWINGWEIGHT
 
 RPCVariable<int> rpc_f0(&f0, "f0");
 RPCVariable<int> rpc_f1(&f1, "f1");
@@ -76,24 +86,22 @@
 EthernetNetIf eth;  
 HTTPServer svr;
 
- 
-   
+int main() {
 
-int main() {
+  //Mettre la LED bicolore en ROUGE pendant la tare
+  ledB1 = 1;
+  ledB2 = 0;
+  RW = 0;
   
-  menu = 0 ;
-  RW = 0 ;
-       
-      
-      
-      
-       lcd.locate(0,0); 
-       lcd.printf("   mesure MOI     ");
-       lcd.locate(0,1); 
-       lcd.printf("  club de golf    ");
-       wait_ms(2000);
-       lcd.cls(); 
-    
+   scale1.setScale(0);
+   scale1.tare(); //Reset the scale to 0
+
+   scale2.setScale(0);
+   scale2.tare(); //Reset the scale to 0
+   
+   long zero_factor1 = scale1.averageValue(averageSamples); //Get a baseline reading / Obtenez une lecture de base CAPTEUR 1
+   long zero_factor2 = scale2.averageValue(averageSamples); //Get a baseline reading / Obtenez une lecture de base CAPTEUR 2
+
   Base::add_rpc_class<DigitalOut>();
 
   printf("Setting up...\n");
@@ -126,41 +134,48 @@
   svr.bind(80);
   
   printf("Listening...\n");
-   scale1.setScale(0);
-   scale1.tare(); //Reset the scale to 0
 
-      scale2.setScale(0);
-      scale2.tare(); //Reset the scale to 0
-  long zero_factor1 = scale1.averageValue(averageSamples); //Get a baseline reading / Obtenez une lecture de base CAPTEUR 1
-    long zero_factor2 = scale2.averageValue(averageSamples); //Get a baseline reading / Obtenez une lecture de base CAPTEUR 2
-      scale1.setScale(calibration_factor1); //Adjust to this calibration factor / Ajuster à ce facteur d'étalonnage
-      scale2.setScale(calibration_factor2); //Adjust to this calibration factor / Ajuster à ce facteur d'étalonnage
-    
-     
   Timer tm;
   tm.start();
   //Listen indefinitely
-
+  
+  
+  // Mettre la LED en VERT pour indiquer la fin de la tare
+  ledB1 = 0;
+  ledB2 = 1;
+  
   while(true)
   {
+    scale1.setScale(calibration_factor1); //Adjust to this calibration factor / Ajuster à ce facteur d'étalonnage
+    scale2.setScale(calibration_factor2); //Adjust to this calibration factor / Ajuster à ce facteur d'étalonnage
+    
+    //------------------------------ MESURE PRINCIPAL PIERRE ------------------------------
+    if (moyenneClick == 0) {
+      weight1 = scale1.getGram();
+      weight2 = scale2.getGram();
+      
+      f0 = (int) weight1;
+      f1 = (int) weight2;
+    }
+    
+    m = weight1 - weight2; // Calcul masse du club
+    lg = 45 * (weight1 / m); //Longueur jusqu'aux points d'équilibre
+
+    MOI = m * (lg * lg); // Calcul masse du MOI (masse inertielle)
+
+    calculInches = lg / convertionInches; //Convertion en inches
+    SW = (calculInches - 14) * m; //Calcul SWINGWEIGHT
+    //------------------------------ MESURE PRINCIPAL PIERRE ------------------------------
+    
     //F1 = 1000*Pot1.read();
     //F2 =  1000*Pot2.read();
     
-  //  pot2 = 926;
-   //pot1 = 351;
-    wait_ms(100);
-    weight1 = scale1.getGram();
-
-      weight2 = scale2.getGram();
-      
-     //  f0 = (int) weight1 ;
-     // f1 = (int) weight2 ; 
-      
-      f0 =  weight1 ;
-     f1 =  weight2 ; 
-     printf("wo = %f g : w1 = %f g \n", weight1 , weight2);
-       printf("fo = %d g : fi = %d g \n", f0 , f1);
-    Net::poll();
+    //pot2 = 926;
+    //pot1 = 351;
+     
+     printf("w1 = %f g : w2 = %f g \n", weight1 , weight2);
+     printf("f0 = %d g : f1 = %d g \n", f0 , f1);
+     Net::poll();
     
     
     if(tm.read()>.5)
@@ -177,212 +192,272 @@
         lg = (l1*f1)/(f1-f0);
         MOI = m*lg*lg/1000 ;*/
 
- switch(menu)
-{
-      
-    case(0):
-           
-           lcd.locate(1,0); 
-           lcd.printf("*Mesures Forces");
-           lcd.locate(1,1); 
-           lcd.printf(" Calcul MOI    ");
-           wait_ms(tempo_saisie);
-           
-      if (!Center ){
-           lcd.cls(); 
-           menu = 3 ;
-           }  
-     
-      if (!Down){
-           lcd.cls();
-           menu = 1 ;}
-           
-      if (!Right ){
-           lcd.cls(); 
-           menu = 7 ;
-           } 
-           
-        myledV = 0;
-        myledR = 0;   
-           
-           
-           break; //fin case 0
-                 
-    
-    case(1):
-           
-     
-          
-           lcd.locate(1,0); 
-           lcd.printf(" Mesures Forces");
-           lcd.locate(1,1); 
-           lcd.printf("*Calcul MOI    ");
-           wait_ms(tempo_saisie);
-         
-      if (!Center ){
-           lcd.cls(); 
-           menu = 4 ;
-           }  
-     
-      if (!Down){
-           lcd.cls();
-           menu = 2 ;}
-           
-      if (!Up){
-           lcd.cls();
-           menu = 0 ;}
-           
-      if (!Right ){
-           lcd.cls(); 
-           menu = 7 ;
-           } 
-        myledV = 0;
-        myledR = 0;    
-           
-           
-           break; //fin case 1 
-                 
-         
-    case (2):
-           
-           lcd.locate(1,0);
-           lcd.printf(" Calcul MOI    ");
-           lcd.locate(1,1); 
-           lcd.printf("*Masse/longueur");
-           wait_ms(tempo_saisie);
-        
-       if (!Center ){
-           lcd.cls(); 
-           menu = 5 ;
-           }  
-             
-       if (!Up){
-           lcd.cls();
-           menu = 1 ;}
-           
-       if (!Right ){
-           lcd.cls(); 
-           menu = 7 ;
-           } 
-           
-                         
-        myledV = 0;
-        myledR = 0;
-           
-           break; //fin case 2 
-           
-    case (3):
-           
-           lcd.locate(1,0);
-           lcd.printf("F0 =  %d g", f0);
-           lcd.locate(1,1);
-           lcd.printf("F1 =  %d g", f1);
-           wait_ms(tempo_saisie);
-           
-       if (!Left ){
-           lcd.cls(); 
-           menu = 0 ;
-           }
-           
-        myledV = 1;
-        wait(0.2);
-        myledV = 0;
-        wait(0.2);
-        myledR = 0;
-        
+switch (menu) {
+    case 0: {
+      //LED_BOUTON_B
+      ledB1 = 0;
+      ledB2 = 1;
+
+      lcd.cls(); //CLEAR LCD
+      lcd.locate(0, 0); //Ecrire sur la 1er ligne
+      lcd.printf("F1: %.2fg\n", weight1); // Afficher le poids en grammes du capteur 1
+
+      lcd.locate(0, 1); //Ecrire sur la 2ème ligne
+      lcd.printf("F0: %.2fg\n", weight2); // Afficher le poids en grammes du capteur 2
+
+      if (!Center) {
+        //CODE: LED_BOUTON_A
+        ledB1 = 1;
+        ledB2 = 0;
+
+        weight1 = 0;
+        weight2 = 0;
+
+        wait(1.5); // Attendre 1.5 sec
+
+        while (moyenneClick == 0) {
+
+          boucleExecute++;
+
+          weight1 = weight1 + scale1.getGram();
+          weight2 = weight2 + scale2.getGram();
+
+          m = weight1 - weight2; // Calcul masse du club
+
+          massMoy = massMoy + m;
+
+          wait(0.1); // Attendre 0.1 sec
+
+          massMoy = massMoy / boucleExecute;
+
+          lcd.cls(); //CLEAR LCD
+          lcd.locate(0, 0); //Ecrire sur la 1er ligne
+          lcd.printf("Nombre de points\n"); // Afficher le nombre de points
+
+          lcd.locate(0, 1); //Ecrire sur la 1er ligne
+          lcd.printf("%d   m: %.2fg\n", boucleExecute, massMoy); // Afficher le nombre de points
+
+          //LED VERT
+          ledB1 = 0;
+          ledB2 = 1;
+
+          //LED ROUGE
+          ledB1 = 1;
+          ledB2 = 0;
+
+          massMoy = 0;
+
+          if (!Center) {
+            //LED ROUGE
+            ledB1 = 0;
+            ledB2 = 1;
+            moyenneClick = 1; //Mettre moyenneClick a 1
+            wait(1); // Attendre 1 sec
+          }
+
+        }
+
+        weight1 = weight1 / boucleExecute;
+        weight2 = weight2 / boucleExecute;
+
+        wait(0.5); // Attendre 0.5 sec
+      } else if (!Down) {
+        menu = 1;
+        //CODE: LED_BOUTON_A
+        ledB1 = 1;
+        ledB2 = 0;
+
+        wait(0.5); // Attendre 0.5 sec
+      } else if (!Up) {
+        menu = 3;
+        //CODE: LED_BOUTON_A
+        ledB1 = 1;
+        ledB2 = 0;
+
+        wait(0.5); // Attendre 0.5 sec
+      }
+    }
+    break;
+
+    case 1: {
+      //LED_BOUTON_B
+      ledB1 = 0;
+      ledB2 = 1;
+
+      lcd.cls(); //CLEAR LCD
+      lcd.locate(0, 0); //Ecrire sur la 1er ligne
+      lcd.printf("m = %.2fg\n", m);
+
+      lg = 45 * (weight1 / m);
+      lcd.locate(0, 1); //Ecrire sur la 2ème ligne
+      lcd.printf("lg = %.2fcm\n", lg);
+
+      if (!Down) {
+        menu = 2;
+        //CODE: LED_BOUTON_A
+        ledB1 = 1;
+        ledB2 = 0;
+        wait(0.5); // Attendre 0.5 sec
+      } else if (!Up) {
+        menu = 0;
+        //CODE: LED_BOUTON_A
+        ledB1 = 1;
+        ledB2 = 0;
+
+        wait(0.5); // Attendre 0.5 sec
+      }
+
+    }
+    break;
+
+    case 2: {
+      //LED_BOUTON_B
+      ledB1 = 0;
+      ledB2 = 1;
+
+      lcd.cls(); //CLEAR LCD
+      lcd.locate(0, 0); //Ecrire sur la 1er ligne
+      lcd.printf("MOI:\n");
+      lcd.locate(0, 1); //Ecrire sur la 2ème ligne
+      lcd.printf("%.2f kg.cm2\n", MOI / 1000);
+
+      if (!Down) {
+        menu = 3;
+        //CODE: LED_BOUTON_A
+        ledB1 = 1;
+        ledB2 = 0;
 
-           break; //fin case 3  
-           
-    case (4):
- 
-           lcd.locate(0,0);
-           lcd.printf("MOI= %d kg*cm2", MOI);
-           wait_ms(tempo_saisie);
-           
-       if (!Left ){
-           lcd.cls(); 
-           menu = 1 ;
-           }             
-           
-        myledR = 1;
-        wait(0.2);
-        myledR = 0;
-        wait(0.2);
-        myledV = 0;
-        
-           
-           break; //fin case 4 
-               
-    case (5):
-         
-           lcd.locate(1,0);
-           lcd.printf(" Masse = %d g" , m);
-           wait_ms(tempo_saisie);
-           
-       if (!Left ){
-           lcd.cls(); 
-           menu = 2 ;
-           }  
-           
-       if (!Right ){
-           lcd.cls(); 
-           menu = 6 ;
-           } 
-           
-                 
-        myledV = 1;
-        myledR = 0;
-           
-           
-           break; //fin case 5 
-           
-    
-    case (6):
-          
-           lcd.locate(1,0);
-           lcd.printf(" l1 = %d cm" , l1);
-           lcd.locate(1,1);
-           lcd.printf(" lg = %d cm" , lg);
-           wait_ms(tempo_saisie);
-           
-       if (!Left ){
-           lcd.cls(); 
-           menu = 2 ;
-           }  
-        
-        myledR = 1;
-        myledV = 0;
-        
-           
-           break; //fin case 6 
-       
-       
-    case (7):
-        
-         
-           lcd.locate(1,0);
-           lcd.printf(" HTML      ");
-           wait_ms(tempo_saisie);
-           
-       if (!Left ){
-           lcd.cls(); 
-           menu = 0 ;
-           }  
-           
-        myledR = 1;
-        wait(0.2);
-        myledV = 0;
-        wait(0.2);
-        
-        myledR = 0;
-        wait(0.2);
-        myledV = 1;
-        wait(0.2);
-        
-           break; //fin case 7   
+        wait(0.5); // Attendre 0.5 sec
+      } else if (!Up) {
+        menu = 1;
+        //CODE: LED_BOUTON_A
+        ledB1 = 1;
+        ledB2 = 0;
+
+        wait(0.5); // Attendre 0.5 sec
+      }
+    }
+    break;
+
+    case 3: {
+      //LED_BOUTON_B
+      ledB1 = 0;
+      ledB2 = 1;
+
+      lcd.cls(); //CLEAR LCD
+      lcd.locate(0, 0); //Ecrire sur la 1er ligne
+
+      lcd.printf("SW = %.2f\n", SW);
+
+      lcd.locate(0, 1); //Ecrire sur la 2ème ligne
+
+      // Résultat de SW (SWINGWEIGHT / inertie) place le club dans une catégorie
+      if (SW < 5250) {
+        lcd.printf("SWINGWEIGHT NULL\n", SW);
+      } else if (SW > 5250 && SW < 5300) {
+        lcd.printf("SWINGWEIGHT = B4\n");
+      } else if (SW > 5300 && SW < 5350) {
+        lcd.printf("SWINGWEIGHT = B5\n");
+      } else if (SW > 5350 && SW < 5400) {
+        lcd.printf("SWINGWEIGHT = B6\n");
+      } else if (SW > 5400 && SW < 5450) {
+        lcd.printf("SWINGWEIGHT = B7\n");
+      } else if (SW > 5450 && SW < 5500) {
+        lcd.printf("SWINGWEIGHT = B8\n");
+      } else if (SW > 5500 && SW < 5550) {
+        lcd.printf("SWINGWEIGHT = B9\n");
+      } else if (SW > 5550 && SW < 5600) {
+        lcd.printf("SWINGWEIGHT = C0\n");
+      } else if (SW > 5600 && SW < 5650) {
+        lcd.printf("SWINGWEIGHT = C1\n");
+      } else if (SW > 5650 && SW < 5700) {
+        lcd.printf("SWINGWEIGHT = C2\n");
+      } else if (SW > 5700 && SW < 5750) {
+        lcd.printf("SWINGWEIGHT = C3\n");
+      } else if (SW > 5750 && SW < 5800) {
+        lcd.printf("SWINGWEIGHT = C4\n");
+      } else if (SW > 5800 && SW < 5850) {
+        lcd.printf("SWINGWEIGHT = C5\n");
+      } else if (SW > 5850 && SW < 5900) {
+        lcd.printf("SWINGWEIGHT = C6\n");
+      } else if (SW > 5900 && SW < 5950) {
+        lcd.printf("SWINGWEIGHT = C7\n");
+      } else if (SW > 5950 && SW < 6000) {
+        lcd.printf("SWINGWEIGHT = C8\n");
+      } else if (SW > 6000 && SW < 6050) {
+        lcd.printf("SWINGWEIGHT = C9\n");
+      } else if (SW > 6050 && SW < 6100) {
+        lcd.printf("SWINGWEIGHT = D0\n");
+      } else if (SW > 6100 && SW < 6150) {
+        lcd.printf("SWINGWEIGHT = D1\n");
+      } else if (SW > 6150 && SW < 6200) {
+        lcd.printf("SWINGWEIGHT = D2\n");
+      } else if (SW > 6200 && SW < 6250) {
+        lcd.printf("SWINGWEIGHT = D3\n");
+      } else if (SW > 6250 && SW < 6300) {
+        lcd.printf("SWINGWEIGHT = D4\n");
+      } else if (SW > 6300 && SW < 6350) {
+        lcd.printf("SWINGWEIGHT = D5\n");
+      } else if (SW > 6350 && SW < 6400) {
+        lcd.printf("SWINGWEIGHT = D6\n");
+      } else if (SW > 6400 && SW < 6450) {
+        lcd.printf("SWINGWEIGHT = D7\n");
+      } else if (SW > 6450 && SW < 6500) {
+        lcd.printf("SWINGWEIGHT = D8\n");
+      } else if (SW > 6500) {
+        lcd.printf("SWINGWEIGHT = D9\n");
+      }
+
+      if (!Down) {
+        menu = 4;
+        //CODE: LED_BOUTON_A
+        ledB1 = 1;
+        ledB2 = 0;
+
+        wait(0.5); // Attendre 0.5 sec
+      } else if (!Up) {
+        menu = 2;
+        //CODE: LED_BOUTON_A
+        ledB1 = 1;
+        ledB2 = 0;
+
+        wait(0.5); // Attendre 0.5 sec
+      }
+    }
+    break;
+
+    case 4: {
+      //LED_BOUTON_B
+      ledB1 = 0;
+      ledB2 = 1;
+
+      lcd.cls(); //CLEAR LCD
+      lcd.locate(0, 0); //Ecrire sur la 1er ligne
+
+      lcd.printf("N points moyenne");
+
+      lcd.locate(0, 1); //Ecrire sur la 2eme ligne
+      lcd.printf("%d\n", boucleExecute);
+
+      if (!Down) {
+        menu = 0;
+        //CODE: LED_BOUTON_A
+        ledB1 = 1;
+        ledB2 = 0;
+
+        wait(0.5); // Attendre 0.5 sec
+      } else if (!Up) {
+        menu = 3;
+        //CODE: LED_BOUTON_A
+        ledB1 = 1;
+        ledB2 = 0;
+
+        wait(0.5); // Attendre 0.5 sec
+      }
+    }
+    break;
            // http://192.168.1.102/rpc/pot1/read dans le navigateur permet de lire l'état du potard !
-  }
+  } //FIN SWITCH
   
-
-}
-}
\ No newline at end of file
+} //FIN WHILE
+} //FIN MAIN
\ No newline at end of file