multiplication erronée

Bonjour à tous,

voilà je me lance dans la programmation avec l’arduino.
je suis actuellement en train de créer un télémètre avec capteur HC-SR04 avec possibilitée de prendre deux infos de distance pour ensuite calculer les M2 de ma pièce avec un seul bouton.
affichage LCD 16X2.

Premier push=longueur de la pièce.
Deuxième push=largeur de la pièce.
Troisième push= résultat en M2
Quatrième push=reset

Quand la longueur et la largeur est calculer mon arduino me donne un résultat non correct.

Comment faire?

Merci à vous

#include  <LiquidCrystal.h>

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);


const int pwm=9; //Contraste LCD

const byte TRIGGER_PIN = 7; // Broche TRIGGER
const byte ECHO_PIN = 6;    // Broche ECHO

const unsigned long MEASURE_TIMEOUT = 25000UL;
const float SOUND_SPEED = 340.0 / 1000;

int READ1=10;//Etat bouton

int b1=8;//Alimentation bouton

int compt;//Compteur push

float val1; //Longueur
float val2;//Largeur
float resultat;//M2



void setup() {

  Serial.begin(9600);
  /* Initialise les broches */
  pinMode(TRIGGER_PIN, OUTPUT);
  digitalWrite(TRIGGER_PIN, LOW); // La broche TRIGGER doit être à LOW au repos
  pinMode(ECHO_PIN, INPUT);
  pinMode(b1,OUTPUT);

   digitalWrite(b1,HIGH);
   pinMode(pwm,OUTPUT);
   
   analogWrite(pwm,108);//Contraste LCD

   lcd.begin(16, 2);
   lcd.print("Distance :");

}

void loop() {

  
  /* 1. Lance une mesure de distance en envoyant une impulsion HIGH de 10µs sur la broche TRIGGER */
  digitalWrite(TRIGGER_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIGGER_PIN, LOW);
  
  /* 2. Mesure le temps entre l'envoi de l'impulsion ultrasonique et son écho (si il existe) */
  long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT);
   
  /* 3. Calcul la distance à partir du temps mesuré */
  float distance_mm = measure / 2.0 * SOUND_SPEED;
  
  /* Affiche les résultats en mm, cm et m 
  Serial.print(F("Distance: "));
  Serial.print(distance_mm);
  Serial.print(F("mm ("));
  Serial.print(distance_mm / 10.0, 2);
  Serial.print(F("cm, "));
  Serial.print(distance_mm / 1000.0, 2);
  Serial.println(F("m)"));*/
  
  lcd.setCursor(11,0);
  lcd.print(distance_mm / 1000);
  lcd.setCursor(15,0);
  lcd.print("M");
  
 
 


if (digitalRead(READ1)==0){
   compt=compt+1;
   
      if((compt)==1){
        val1=(distance_mm/1000);
        lcd.setCursor(0,1);
        lcd.print("Longueur :");
        lcd.print(val1);
        lcd.print("M");
         
        }
          if((compt)==2){
            val2=(distance_mm/1000);
            lcd.setCursor(0,1);
            lcd.print("Largeur  :");
            lcd.print(val1);
            lcd.print("M");
          }
            

                if((compt)==3){
                  
               
                lcd.clear();
                lcd.print("Distance :");
                lcd.setCursor(0,1);
                lcd.print(resultat);
                resultat = val1 * val2;
                }

                    if((compt)==4){
                  
                    compt=0;
                    lcd.clear();
                    lcd.print("Distance :");
                    }

              
}
 /* Affichage moniteur serie des valeurs*/

Serial.print(compt);
Serial.println("");
Serial.print("distance");
Serial.println(distance_mm/1000);
Serial.print("valeur1 :");
Serial.println(val1);
Serial.print("valeur2 :");
Serial.println(val2);
Serial.print(resultat);
Serial.println("M2:");

delay(250);

}

Bonjour,

Tu calcules le résultat après l'avoir affiché

     lcd.print(resultat);
     resultat = val1 * val2;

Il faut le calculer avant

     resultat = val1 * val2;
     lcd.print(resultat);

Merci beaucoup Kamill.