Zaehlen von millis() stoppen nach erreichen eines Wertes

Unkommentiert und ohne Erklärung.

#include <Servo.h>

const byte  BUTTON_Tester = 2;
const byte  LED_1 = 3;
const byte  LED_2 = 4;
const byte  LED_3 = 5;
const byte  LED_4 = 6;
bool buttonState = 0;
const byte  KANAL_1 = A0;
const byte  KANAL_2 = A1;
const byte  KANAL_3 = A2;
const byte  KANAL_4 = A3;
bool kanalState_1 = 0;
bool kanalState_2 = 0;
bool kanalState_3 = 0;
bool kanalState_4 = 0;
Servo MyServo;
unsigned int winkel = 0;
const byte  SCHALTER = 8;
int schalterState = 0;
unsigned long currentMillis = 0;
unsigned long previousMillis = 0;
unsigned long pause = 6000;
unsigned long stateMillis = 0;
unsigned int pausen_wert = 6000;
int x = 0;
int y = 0;
bool millisMerker = false;
bool kanalSperre = false;

void setup()
{
  Serial.begin(115200);
  Serial.println(F("Start..."));
  pinMode(BUTTON_Tester, INPUT_PULLUP);
  pinMode(LED_1, OUTPUT);
  pinMode(LED_2, OUTPUT);
  pinMode(LED_3, OUTPUT);
  pinMode(LED_4, OUTPUT);
  pinMode(KANAL_1, INPUT_PULLUP);
  pinMode(KANAL_2, INPUT_PULLUP);
  pinMode(KANAL_3, INPUT_PULLUP);
  pinMode(KANAL_4, INPUT_PULLUP);
  pinMode(SCHALTER, OUTPUT);
  MyServo.attach(7);
}

unsigned int schalten (unsigned int soll, unsigned int ist, unsigned int Pause)
{
  static unsigned long lastmillis = 0;
  if (millis() - lastmillis >= pause)
  {
    MyServo.attach(7);
    Serial.print(F("Servo "));
    if (soll > ist)
    {
      Serial.print("+");
      ist++;
    }
    else if (soll < ist)
    {
      ist--;
      Serial.print("-");
    }
    MyServo.write(ist);
    Serial.println();
  }
  MyServo.detach();
  return soll;
}


void loop()
{
  kanalState_1 = digitalRead(KANAL_1);
  kanalState_2 = digitalRead(KANAL_2);
  // Kanal 1 ist Gruen
  if (kanalState_1)
  {
    Serial.println(F("kanal1 high"));
    /*
      digitalWrite(LED_1, HIGH);
      digitalWrite(SCHALTER, HIGH);
      winkel = schalten(170, winkel, 70);
    */
  }
  // Kanal 2 ist Grau
  if (kanalState_2)
  {
    if (!kanalSperre)
    {
      /*
        digitalWrite(LED_2, HIGH);
        winkel = schalten(170, winkel, 70);
      */
      Serial.println(F("kanal2 high"));
      kanalSperre = true;
      if (!millisMerker);
      {
        stateMillis = millis();
        Serial.print("stateMillis:");
        Serial.println(stateMillis);
        millisMerker = true;
      }
    }
  }
  if (!kanalState_1)
  {
    if (!kanalState_2)
    {
      /*
        digitalWrite(LED_2, LOW);
        winkel = schalten(0, winkel, 70);
      */
      millisMerker = false;
      kanalSperre = false;
      Serial.println(F("alle kanaele low"));
    }
    else if (!millisMerker)
    {
      /*
        digitalWrite(LED_2, LOW);
        winkel = schalten(0, winkel, 70);
      */
      Serial.println(F("nach millis-Ablauf alle kanaele low"));
    }
  }
  if  (millisMerker)
  {
    if (millis() - stateMillis > pause)
    {
      //     winkel = schalten(0, winkel, 70);
      Serial.println(F("millis() low"));
      millisMerker = false;
    }
  }
}

Wenn der geht, muss daraus ein logisch verständliches gebaut werden.