millis() reset nel if

Salve, come si fa ad azzerare il tempo della variabile di una millis() quando mi sposto da una IF alla altra.
vorrai che si azzera ogni volta che si chiude IF

ciao...diciamo che millis() non lo puoi resettare (anche se non è del tutto vero...se non ricordo male nei link che Guglielmo indica c'è un esempio di modifica di millis()); una variable che usi per "catturare" millis(), e che è di tipo unsigned long, la resetti con "=0"...

Millis() la puoi azzerare ma non é necessario farlo.
Memorizzi in una variabile il valore dei millis in ceri momenti e fai un confronto col valore attuale.

Poi senza il Tuo sketch non sappiamo dire qualcosa di concreto.
Ciao Uwe

const int releapri = 13;
const int relechiude = 12;
const int fotocellula = A0;
const int conttato = A1;
const int buttonPin = 2; 
const int buttonPin1 = 4;    
const int micro = 8;   

unsigned long previousMillis1 = 0; 
unsigned long interval1 = 10000;  
unsigned long previousMillis2 = 0;
unsigned long interval2 = 20000;
unsigned int counter = 0;



      


// variables will change:
int buttonState = 0;  
int buttonState1 = 0;  // variable for reading the pushbutton status
int microState = 0;  

void setup() {
  Serial.begin(9600);

  pinMode(releapri, OUTPUT);
  pinMode(relechiude, OUTPUT);
  pinMode(fotocellula, INPUT);
    pinMode(conttato, INPUT);
  pinMode(buttonPin, INPUT);
   pinMode(buttonPin1, INPUT);
     pinMode(micro, INPUT);
}

void loop() {
  int fotocellulaStatus = analogRead(fotocellula); 
    int conttatoStatus = analogRead(conttato);  
  buttonState = digitalRead(buttonPin);
   buttonState1 = digitalRead(buttonPin1);
    microState = digitalRead(micro);
             previousMillis1 = millis(); 

         if ( buttonState == LOW)  {
          digitalWrite(relechiude, LOW);
             digitalWrite(releapri, LOW);
          delay(100); 
digitalWrite(relechiude, HIGH);
    digitalWrite(releapri, LOW);
    Serial.println(micro);
      Serial.println(conttatoStatus);
    }

  if ( buttonState1 == LOW)  {
           digitalWrite(relechiude, LOW);
             digitalWrite(releapri, LOW);
          delay(100); 
digitalWrite(relechiude, LOW);
    digitalWrite(releapri, HIGH);}

       if ((fotocellulaStatus <= 40)&&(conttatoStatus <= 1005))
   {

digitalWrite(relechiude, LOW);
delay(100);
    digitalWrite(releapri, HIGH);
   }
   if (microState == HIGH) {
    
   
   if (fotocellulaStatus >= 40)
 {
 
if (millis() - previousMillis1 > interval1) {
   
  digitalWrite(releapri, LOW);
  digitalWrite(relechiude, LOW);

  }
  if (millis() - previousMillis2 > interval2) {
    previousMillis2 = millis(); //
    Serial.println(++counter); //
    digitalWrite(relechiude, HIGH);
    digitalWrite(releapri, LOW);
  }

}
     if (conttatoStatus <= 1005)
  
 { digitalWrite(releapri, LOW);
  }  }
  
     

      if ((microState == LOW)&& (conttatoStatus >= 1005))
   {

        digitalWrite(relechiude, LOW);



   

   
   }

    
    
    
    
    }

il mio problema che nel intervallo1 non appena o vero qua

if (microState == HIGH) {
    
   
   if (fotocellulaStatus >= 40)
 {
 
if (millis() - previousMillis1 > interval1) {
   
  digitalWrite(releapri, LOW);
  digitalWrite(relechiude, LOW);

che il motore se deve fermare per un certo intervallo non capisco perché questo intervallo non mai uguale sopra tutto se esco da questa IF diventa nullo

Permettimi un consiglio: l'indentazione del codice è fondamentale per non far perdere tempo ad altri a cercare di capire dove iniziano/finiscono gli if e quali istruzioni sono contenute in quale struttura... altr im entièc om e pret end erech e qualc un ole gga de lte stos cri ttoc osì.

Se proprio non lo si vuole indentare a mano si può usare l'apposita funzione dell'editor:
Strumenti->Formattazione automatica