Frisse blik gevraagd.

ik doe de code nu ook in 3 delen:
even wat achtergrond info. ik heb een schakelaar met 3 standen (onlogisch ding, maar hij hoort thuis in het interieur van de auto)
Stand 1 A+F
stand 2 A
stand 3 A+W

Verder zit er nog een spiegellamp (verstraler met autospiegel) en een achtermistlamp in.

ik kom nu tot de volgende code, zit een boel overbodige informatie, maar ik heb nu dit:

void stuurmeting(){
  reading = analogRead(potPin);

  if (MillisNu - VorigeMillis > wachttijdA){
    VorigeMillis = MillisNu;
    firstreading = analogRead(potPin);
  }

  if (MillisNu - VorigeMillis > wachttijdB){
    if (0 < (firstreading - reading) < Marge){
      calibrate = firstreading; 
    }
    else if (0 < (reading - firstreading) < Marge){
      calibrate = firstreading; 
    }
    else{
      calibrate = calibrate; 
    }
  }
}

void miststanden(){

  if (MistA==HIGH && MistF==HIGH && lichtstate==HIGH ){
    if(MillisNu-DelayB>1000){
      mistrstate=HIGH;
      mistlstate=HIGH;
      mistastate=LOW;
      spiegelstate=LOW;
      DelayC=MillisNu;
      mistcounter=1;
    }
    else{
      DelayC=MillisNu;   
      mistastate=LOW;
    }
  }

  if (MistA==HIGH && MistF==LOW && MistW==LOW && lichtstate==HIGH){
    if(MillisNu-DelayB>1000){
      mistrstate=HIGH;
      mistlstate=HIGH;
      spiegelstate=LOW;
      mistastate=LOW;
      DelayD=MillisNu;
      mistcounter=1;
    }
    if(MillisNu-DelayC>1000){
      mistrstate=HIGH;
      mistlstate=HIGH;
      mistastate=HIGH;
      spiegelstate=LOW;
      DelayD=MillisNu;
      mistcounter=1;
    }
    else{
      DelayD=MillisNu;
      spiegelstate=LOW;
      mistastate=LOW;
    }
  }

  if (MistA==HIGH && MistF==LOW && MistW==HIGH && mistcounter ==2 && lichtstate==HIGH){
    if(MillisNu-DelayD>1000){
      spiegelstate=HIGH;
      mistrstate=HIGH;
      mistlstate=HIGH;
      mistastate=LOW;
      DelayC=MillisNu;
    }
    else{ 
      DelayC=MillisNu;
      DelayB=MillisNu;
      mistastate=LOW;
      spiegelstate=LOW;
    }
  }

  if (MistA==HIGH && MistF==LOW && MistW==HIGH && mistcounter ==1 && lichtstate==HIGH){
    if(MillisNu-DelayD>1000){
      if (reading - calibrate > Stuuruitslag){
        stur=100;
        mistlstate=HIGH;
        mistrstate=LOW;
        Delay=MillisNu;
        mistastate=LOW;
        spiegelstate=HIGH;
        DelayB=MillisNu;
        DelayC=MillisNu;
      }
      else if (calibrate - reading > Stuuruitslag){
        stur=200;
        mistrstate=HIGH;
        mistlstate=LOW;
        Delay=MillisNu;
        mistastate=LOW;
        spiegelstate=HIGH;
        DelayB=MillisNu;
        DelayC=MillisNu;
      }
      else if (MillisNu-Delay<1000 && lichtstate==HIGH){
        if (stur>150){
          mistrstate=HIGH;
          mistlstate=LOW;
          mistastate=LOW;
          spiegelstate=HIGH;
          DelayB=MillisNu;
          DelayC=MillisNu;
        }
        else{
          mistlstate=HIGH;  
          mistrstate=LOW;
          mistastate=LOW;
          spiegelstate=HIGH;
          DelayB=MillisNu;
          DelayC=MillisNu;
        }
      }
      else{
        mistlstate=LOW;  
        mistrstate=LOW;
        mistastate=LOW;
        spiegelstate=HIGH;
        DelayB=MillisNu;
        DelayC=MillisNu;
      }
    }
  }

  if (MistA==LOW && MistF==LOW && MistW==LOW && lichtstate==HIGH){
    mistastate=LOW;
    spiegelstate=LOW;
    DelayB=MillisNu;
    DelayC=MillisNu;
    DelayD=MillisNu;
    mistcounter=0; 

    if (reading - calibrate > Stuuruitslag){
      stur=100;
      mistlstate=HIGH;
      mistrstate=LOW;
      Delay=MillisNu;
      mistastate=LOW;
      spiegelstate=LOW;
      DelayB=MillisNu;
      DelayC=MillisNu;
      DelayD=MillisNu;
      mistcounter=0;
    }
    else if (calibrate - reading > Stuuruitslag){
      stur=200;
      mistrstate=HIGH;
      mistlstate=LOW;
      Delay=MillisNu;
      mistastate=LOW;
      spiegelstate=LOW;
      DelayB=MillisNu;
      DelayC=MillisNu;
      DelayD=MillisNu;
      mistcounter=0;
    }
    else if (MillisNu-Delay<1000 && lichtstate==HIGH){
      if (stur>150){
        mistrstate=HIGH;
        mistlstate=LOW;
        mistastate=LOW;
        spiegelstate=LOW;
        DelayB=MillisNu;
        DelayC=MillisNu;
        DelayD=MillisNu;
        mistcounter=0;
      }
      else{
        mistlstate=HIGH;  
        mistrstate=LOW;
        mistastate=LOW;
        spiegelstate=LOW;
        DelayB=MillisNu;
        DelayC=MillisNu;
        DelayD=MillisNu;
        mistcounter=0;
      }
    }
    else{
      mistlstate=LOW;  
      mistrstate=LOW;
      mistastate=LOW;
      spiegelstate=LOW;
      DelayB=MillisNu;
      DelayC=MillisNu;
      DelayD=MillisNu;
      mistcounter=0;
    }
  }

  if (lichtstate==LOW){
    mistastate=LOW;
    spiegelstate=LOW;
    DelayB=MillisNu;
    DelayC=MillisNu;
    DelayD=MillisNu;
    mistcounter=0;
    mistlstate=LOW;  
    mistrstate=LOW;
  }

  digitalWrite(MistR,mistrstate);
  digitalWrite(MistL, mistlstate);
  IOexp.digitalWrite(1,7,mistastate);
  IOexp.digitalWrite(1,6,spiegelstate);
}

void Mistlampen(){

  MistA=IOexp.digitalRead(0,5);
  MistF=IOexp.digitalRead(0,6);
  MistW=IOexp.digitalRead(0,7);

  if (MistA==HIGH && MistF==LOW && MistW==HIGH && lichtstate==HIGH){
    miststate=HIGH;
  }
  else{
    miststate=LOW;
  }

  if (miststate != lastmiststate){
    if (miststate==HIGH){
      mistcounter++;
    }
  }

  if (mistcounter ==3){
    mistcounter = 1;
  } 

  lastmiststate= miststate;
}

void lichten(){

  lichtstate=IOexp.digitalRead(0,3);

  if (lichtstate==HIGH){
    koplamp=HIGH;   
  }
  else{
    koplamp =LOW;
  }
  digitalWrite(KopL,koplamp);
  digitalWrite(KopR,koplamp);
}