SOLUCIONADO Problemas con Serial.print y datos Seriales

Compañeros tengo un problema, lo que pasa es que tengo una balanza electronica conectada a un arduino uno que se encarga de recibir los pesos, lo ue estoy intentando hacer es que una vez que el peso este entre 5.000g y 5.200g la balanza debe imprimir un primer peso, y luego de 2 segundos, si el peso sigue dentro del rango imprimir el segundo peso de lo contrario si pasado los 2 segundos y el peso no esta dentro del rango no imprime el segundo peso, hasta que el peso este nuevamente dentro del rango. ( es como si esperara que estabilizara para confirmar el peso, ya que solo me intereza el segundo peso, que vendria hacer el que ya esta estable)
Una vez que se an imprimido los 2 pesos ya no puede imprimir mas hasta que la balanza regrese a cero.
Estoy haciendo un codigo y funciona bien pero solo con el primer peso, ya que al segundo peso siempre lo imprime igual al primer peso, es deecir estos pesos siempre son iguales aunque la balanza este dando otros valores despues de haber impreso el primer peso.
Adjunto mi codigo para ver si me hechan una mano ya que se me acabaron las ideas

char inChar;
String inString="";
float Peso;


boolean inicio;
boolean verificar;
int conta =0;

void setup()  
{  
 // Abrimos la comunicación serial  
  Serial.begin(9600);  
}

  void loop()  
{   
convertirPeso();
compararPeso();
}

void convertirPeso(){
  
if(Serial.available()) {
  
    inChar = Serial.read();
    if (isDigit(inChar) || inChar == '.' || inChar == '-') {
    inString += inChar;
    }
    if (inChar == '\n') { 
    Peso = inString.toFloat();   
    inString = "";  // borramos el String para un nueva entrada         
    }    
  }  
}

void compararPeso(){

  if(Peso <= 0.000){ // Si el peso es 0.000 inicio es verdadero y el contador es Cero nuevamente
    inicio = true;
    conta = 0;
    }
  else{
    inicio = false;    
      }

  if(inicio == false){    // Si el peso es mayor a cero
  if( (Peso >= 5.000) && (Peso <= 5.200)){ //Si el peso esta dentro del rango y el contador es cero
   
   if(conta < 1 ){
    verificar = true; //para poder verificar y poder imprimir el segundo peso
      Serial.print("Peso1"); //imprimo el primer peso
      Serial.println(Peso);
   }
   else{
    verificar = false;
  }
  }  
  }
    if(verificar==true){
  
  delay(2000);   //espero que se estabilize para imprimir el segundo peso
  convertirPeso();  //consulto nuevamente el peso
  if( (Peso >= 5.000) && (Peso <= 5.200)){ //Si el peso sigue dentro del rango imprime el peso
  Serial.print("Peso2 : "); 
  Serial.println(Peso);  
  conta++; //Aumento un contador para ya no imprimir nuevamente
  inicio=true; //cambia a true para no imprimir nuevamente, hasta que el peso sea 0.000 nuevamente
  }
  else{
  Serial.print(" Este peso esta fuera del rango: "); //Si el peso ya no se encuentra dentro del rango envia un mensaje de aviso
  Serial.println(Peso); 
  }
  }
}

He modificado la lógica de tu programa usando una simple máquina de estados y sin usar delay.
El sistema siempre esta leyendo el puerto serie por lo que a cada momento toma valores provenientes del mismo.

Basado en tu rutina de lectura de puerto serie la que supongo funciona bien entonces dime que tal va esta variante.

char inChar;
String inString="";
float Peso;
unsigned long start;


boolean inicio;
boolean verificar;
int conta = 0;
byte estado = 0;

void setup()   {  
 // Abrimos la comunicación serial  
  Serial.begin(9600);  
}

void loop()  {   
  
  LeerBalanza();

  switch (estado) {
       case 0:  if (Peso > 0)  // Si peso es positivo sigo
                    estado = 1; 
                break;
       case 1:  
                if (Peso >= 5.0 && Peso <= 5.2) {      // Hay lectura de pesada
                    Serial.print("Peso 1 = "); //imprimo el primer peso
                    Serial.println(Peso);
                    estado = 2; // Primer paso okay
                    start = millis()+2000UL; // para luego comparar los 2000 mseg
                }
                break;
       case 2:  if (millis() > start) { // pasaron 2 seg verificar valor
                    if (Peso >= 5.0 && Peso <= 5.2) {      // Hay lectura de pesada
                        Serial.print("Peso 2 = "); //imprimo el primer peso
                        Serial.println(Peso);
                        estado = 3; 
                    }
                    else {
                        Serial.print("Este peso esta fuera del rango: "); //Si el peso ya no se encuentra dentro del rango envia un mensaje de aviso
                        Serial.println(Peso); 
                    }
                }
                break;
       case 3:  estado = 0;
                break;
  }
}

void LeerBalanza(){
  
    if (Serial.available()) {
        inChar = Serial.read();
        if (isDigit(inChar) || inChar == '.' || inChar == '-') {
           inString += inChar;
        }
        if (inChar == '\n') { 
            Peso = inString.toFloat();   
            inString = "";  // borramos el String para un nueva entrada         
        }    
  }  
}

Mucas gracias por la ayuda compañero pude solucionarlo, aunque solo le aumente una condicion para que despues que imprima el segundo peso no haga nada hasta que el peso no sea cero nuevamente cero.

char inChar;
String inString="";
float Peso;
unsigned long start;


boolean inicio;
boolean verificar = true;
int conta = 0;
byte estado = 0;

void setup()   {  
 // Abrimos la comunicación serial  
  Serial.begin(9600);
  delay(100);  
}

void loop()  {   

LeerBalanza();  

  switch (estado) {
     
       case 0:
                if (Peso > 0 )  // Si peso es positivo sigo
                    estado = 1; 
                    else{
                      estado = 0;
                      verificar = true; //hasta que el peso no sea cero nuevamente, no sigo 
                      }
                   break;
    
       case 1: 
                if (Peso >= 5.0 && Peso <= 5.2 && verificar == true) {      // Hay lectura de pesada
                    Serial.print("Peso 1 = "); //imprimo el primer peso
                    Serial.println(Peso);
                    estado = 2; // Primer paso okay
                    start = millis()+2000UL; // para luego comparar los 2000 mseg
                }
                else{
                  estado = 0;
                 
                }
                break;
      
       case 2: 
                   
                if (millis() > start) { // pasaron 2 seg verificar valor
                    if (Peso >= 5.0 && Peso <= 5.2) {      // Hay lectura de pesada
                        Serial.print("Peso 2 = "); //imprimo el primer peso
                        Serial.println(Peso);
                        estado = 3; 
                    }
                    else {
                        Serial.print("Este peso esta fuera del rango: "); //Si el peso ya no se encuentra dentro del rango envia un mensaje de aviso
                        Serial.println(Peso);
                       estado = 0;
                        
                    }
                }
                break;
      
        case 3:               
                estado = 0;
                verificar = false; //hasta que el peso no sea cero nuevamente, no sigo
                break;
  }
}

void LeerBalanza(){
  
    if (Serial.available()) {
        inChar = Serial.read();
        if (isDigit(inChar) || inChar == '.' || inChar == '-') {
           inString += inChar;
        }
        if (inChar == '\n') { 
            Peso = inString.toFloat();   
            inString = "";  // borramos el String para un nueva entrada         
        }    
  }  
}