Zaehlen von millis() stoppen nach erreichen eines Wertes

Hi Plumps,
danke fuer die Erklaerung, Das ist exact mein Wissensstand und das noch gar nicht so lange. Nur leider die Umsetzung, sprich alles noch Theorie fuer mich.

Hier mal einfach mein Projekt erklaert, um mal einen Gegenstand zu haben. Zwei Schalter, mit jeweils AN und AUS. Ein Servo

Schalter_1 AN
Servor geht Pos_1
Schalter_1 AUS
Servo geht Pos_0

Schalter_2 AN
Servo geht Pos_1
Pause
Servo geht Pos_0
Schalter_2 AUS
Servo geht Pos_0

Und um hier mein Verstaendnis zu staerken, das obige Skript. Was alles so kompliziert macht ist wohl der loop(), eine wiederholende Stuktur ist wohl deutlich einfacher.

Vielleicht sollte das ein neuer Post werden, oder?

Hier ein Teil des Loops, der es nicht tut, weiter unten das ganze Skript.

  if (kanalState_2 == HIGH) {
    digitalWrite(LED_2, HIGH);   
    winkel = schalten(170, winkel, 70);
    currentMillis = millis();    
    Serial.print("currentMillis:");
    Serial.println(currentMillis);
    stateMillis = currentMillis;
    Serial.print("stateMillis:");
    Serial.println(stateMillis);   //dies Informationen kommen im Monitor an, aber auch nur die.
    // pause steht auf 6000
    if (currentMillis - stateMillis > pause){
      Serial.println("If Bedingung erfuellt.");      // If wird nie erfuellt.
      winkel = schalten(0, winkel, 70);
      x = 1;      
    }      
  } else {
    digitalWrite(LED_2, LOW);
    Serial.println("else Zweig");    // das jetzt doch, aber halt anders als gedacht.
    winkel = schalten(0, winkel, 70);    
  }

Alles.

#include <Servo.h>

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


void setup() {
  Serial.begin(9600);
  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);
}

int schalten (int soll, int ist, int Pause){   

  MyServo.attach(7);
    if (soll > ist){
      for (ist; ist<=soll; ist++){
         MyServo.write(ist);
        delay(Pause);
      }
    }
    if (soll < ist){
      for (ist; ist>=soll; ist--){
         MyServo.write(ist);
         delay(Pause);
      }
    }
  MyServo.detach();
  return soll;
}


void loop() {
  buttonState = digitalRead(BUTTON_Tester);
  kanalState_1 = digitalRead(KANAL_1);
  kanalState_2 = digitalRead(KANAL_2);
  kanalState_3 = digitalRead(KANAL_3);
  kanalState_4 = digitalRead(KANAL_4);

  // Kanal 1 ist Gruen
  if (kanalState_1 == HIGH) {
    digitalWrite(LED_1, HIGH);
    digitalWrite(SCHALTER, HIGH);
    winkel = schalten(170, winkel, 70);
  } else {
    digitalWrite(LED_1, LOW);
    digitalWrite(SCHALTER, LOW);
    winkel = schalten(0, winkel, 70); 
  }

  // Kanal 2 ist Grau
  if (kanalState_2 == HIGH) {
    digitalWrite(LED_2, HIGH);   
    winkel = schalten(170, winkel, 70);
    currentMillis = millis();    
    Serial.print("currentMillis:");
    Serial.println(currentMillis);
    stateMillis = currentMillis;
    Serial.print("stateMillis:");
    Serial.println(stateMillis);
    // pause steht auf 6000
    if (currentMillis - stateMillis > pause){
      Serial.println("If Bedingung erfuellt.");      
      winkel = schalten(0, winkel, 70);
      x = 1;      
    }      
  } else {
    digitalWrite(LED_2, LOW);
    Serial.println("else Zweig");    
    winkel = schalten(0, winkel, 70);    
  }

  
  if (kanalState_3 == HIGH) {
    digitalWrite(LED_3, HIGH);
  } else {
    digitalWrite(LED_3, LOW);
  }


  if (kanalState_4 == HIGH) {
    digitalWrite(LED_4, HIGH);
  } else {
    digitalWrite(LED_4, LOW);
  }
  



  if (buttonState == LOW) {

    digitalWrite(LED_1, HIGH);
    digitalWrite(LED_2, HIGH);
    digitalWrite(LED_3, HIGH);
    digitalWrite(LED_4, HIGH);
    
  } else {
    
    digitalWrite(LED_1, LOW);
    digitalWrite(LED_2, LOW);
    digitalWrite(LED_3, LOW);
    digitalWrite(LED_4, LOW);    
    }
    
}

Sollte wohl echt ein neues Topic werden! Mache ich auch gleich.