memorizzare una variabile in maniera semipermanente.

Cerco di spiegarmi meglio, dalla prima lettura di alcune variabile, che cambiano continuamente, tramite operazione matematica, ottengo un valore che vorrei mantenere inalterato per un certo periodo di tempo, ma non trovo il sistema di farlo, ho provato anche la funzione millis, ma non riesco ad utilizzarla come vorrei.
allego un pezzo di listato per farvi capire meglio

// ACCORDO AUTOMATICO IN TRASMISSIONE
    if (tune == 1 && tx == 0 ){
       //RICEVO DAL ROSMETRO LE TENSIONI DIRETTA E RIFLESSA
        timer_ros = millis();
        float VDir;
        VDir=analogRead(Dir); // Misuro la tensione diretta
       
        float VRif;
        VRif=analogRead(Rif);  // Misura la tensione riflessa
        
        // CALCOLO IL ROS
        VSWR = ((VDir/(1023/5))+(VRif/(1023/5)))/((VDir/(1023/5))-(VRif/(1023/5)));
        VSWR = (VSWR*10)/10;
       
       
      if(timer - timer_ros > 3000) {
     
        preros = VSWR;
        timer_ros=millis();
      }
}

in pratica i valori VDir e VRif cambiano in continuazione , vorrei memorizzare in una variale "preros" la prima lettura effettuata e mantenerla per un certo periodo di tempo o meglio ancora, fino a quando le condizione della if principale non cambiano

con l'utilizzo di millis(), come da listato, il valore viene memorizzato in preros , solo dopo 3 secondi, ma non ho il valore iniziale
non riesco a trovare il sistema, un'aiuto o uno spunto per risolvere il problema

grazie

ciao...mettere nel setup() lo stesso controllo senza confronto con millis()....!?

Nel tuo caso la millis non serve a nulla, devi imporre una condizione sulla quale vuoi che il valore di preros venga aggiornato con l'attuale valore di VSWR, per come hai impostato il codice ogni volta che la if principale soddisfa la condizione fai il calcolo e lo memorizzi in preros pertanto cambia ogni volta che viene eseguito il calcolo.
Per mantenere preros stabile con la prima lettura semplicemente devi usare una seconda if, all'interno della principale, non basata sulla millis ma su una condizione che ne consente l'aggiornamento, p.e. un flag di tipo bolean che se falso aggiorna preros se vero non la aggiorna, una cosa del tipo:

bool myFlag = false;

 if(!myFlag) {
     
        preros = VSWR;
        myFlag = true;

      }

Dove la definizione di myFlag si trova in testa al programma e da qualche parte nel codice setti myFlag falso quando devi aggiornare preros.

grazie per l'aiuto

funziona

Provo a risponderti a freddo. In primo luogo dichiari preros nellif principale. Poi chiedi una prima lettura delle variabili che ti interessano e le trascrivi in preros (meglio se esso é un array di 2 valori). Poi cominci il resto del programma