SOLUCIONADO sustituir delay por millis

Compañeros no se si formule bien la pregunta pero les explico, tengo un arduino que recibe datos de peso los cuales cuando el peso es mayor a un determinado numero toma 30 muestras y luego las suma y la divide, hasta alli va bien, el problema esta en como añadir un retardo de tiempo para que antes de tomar las 30 muestras espere 1 segundo y luego continue haciendo el resto, No quiero usar delay porque como son datos continuos de peso no quiere se pare todo el programa.
Este es elcodigo que toma las muestras de peso y las promedia

while(peso > pesoMax){

////AQUI ES DONDE QUISIERA PONER UN RETARDO DE 1 SEGUNDO USANDO MILLIS, ANTES DE SUMAR 
 
    suma = 0.0;       //Inicializamos a 0 la suma antes del bucle for
    for ( contador=0; contador < NumerMuestras; contador++){  //Tomamos las muestras de peso y las sumamos
    suma = peso + suma; 
         } 
       promediar(); //promediamos la suma
       break;         
    }
 
   if( peso < pesoMin ){ // desbloqueamos la variable a=1 para desbloquear la sumatoria de pesos
         a = 1;
             }
   
   }

Sin todo el código no se puede poner un retardo que no actue igual que delay.
Eso ocurre porque no entiendes como se debe usar millis() para crearlo.

Para que lo entiendas:
cuando en los miles de ejemplos a modo de tutorial se usa delay dentro de un for u otro bucle, en tu caso el while, dicho bucle se ha detenido (al igual que el resto de instrucciones). Se mantiene en esa línea hasta que se complete el delay.

En cambio si pones usas un timer por ejemplo con millis() y lo pones dentro del while no va a funcionar como quieres, porque no interrumpe el bucle, y va a saltar a la siguiente línea hasta que no se cumpla con lo que has podido salir del bucle o no y el timer realizarse o no. Tienes que cambiar el planteamiento.

Muchas veces al usar timers no hace faltan usar bucles si no el condicional if, ten en cuenta que ya está dentro del loop, pero bueno cada cual lo plantea a su manera, lo que reitero es que un timer con millis() no es un sustitutivo de un delay(). Luego no vale cambiar una línea por otra

Ajustando las energias lo solucione con esto, espero le sirva a alguien mas:

 void sumarPesos(){

switch (estado) {
 
   case 0:
                 if (numero2 > 0.0 )  // Si peso es positivo sigo
                    estado = 1;
                    else{
                       z=0;
                       mensaje(); // 
                    }
                    
                 if(numero2 < pesoMin ){                   
                      verifica = true; //hasta que el peso no sea menor al peso minimo, no sigo 
                      }
                   break;


   case 1:
                   if(numero2 > pesoMax && verifica == true){  
                       Serial.print(" Peso 1 : ");
                       Serial.println(numero2);
                       estado = 2;     
                       start = millis()+ tiempo; // comparar 1 segundo 

                         z=1;
                         mensaje(); //
                          }
                            else{
                             estado = 0;                        
                           }
                            break;
  
   case 2:
                   if (millis() > start) { // si ya paso el tiempo verificar valor                      
                       if(numero2 > pesoMax){   
                          
                             promediar();       //sumamos y promediamos la suma
                             estado = 3;                                     
                          }

                         else {

                        Serial.println(numero2);
                       estado = 0;
                         }
                         }
                          break;
                
    case 3:              
                            estado = 0;
                            verifica = false;
                            break;
                
}
   }

josepaul:
Ajustando las energias lo solucione con esto, espero le sirva a alguien mas

¿Energías? :o Llamemos a las cosas por sus nombres por favor.
Es difícil que tú código sirva de ayuda porque es SÓLO una función, (con variables globales que ni salen en el código y no se saben su uso), no un código completo de un cambio entre un delay y millis.

...Pero ok, si lo resolviste marcar como resuelto y fin del post.

Por si te sirve de algo es un poco redundante que usando millis esté entrando en el loop por cada case hasta llegar a otro "timer". Por si te interesa lo podrías simplificar muchísimo.

arduinito no uso el loop, solo llamo a funciones desde el void setup, bueno no escribo todo el codigo por que es demasiado extenso y con muchas funciones.

Entiendo, entonces presupongo que intentas contar el peso inicial de cada sensor al inicio del programa.

Si el código es extenso, simplemente lo adjuntas.
Eso no es impedimento.
De todas formas dices haberlo resuelto de modo que ya no interesa.
Si hubieras posteado todo el código podriamos haberte mostrado la forma de hacerlo sin comprometer la sección de código que mostraste.