int relais1pin = 7; //Blau -> Grau
int relais2pin = 10; //Grau -> Blau
int endschalter1 = 11; //zeigt Blau
int endschalter2 = 12; //zeigt Grau
int tasterstatus1 = 0; //zeigt Blau
int tasterstatus2 = 0; //zeigt Grau
int booleanBlauGrau = 0;
int booleanGrauBlau = 0;
int booleanWarten = 0;
int anfangsstellung = 0;

void setup() {
  pinMode(relais1pin, OUTPUT);
  pinMode(relais2pin, OUTPUT); 
  pinMode(endschalter1, INPUT_PULLUP);
  pinMode(endschalter2, INPUT_PULLUP);

}

void loop() {

  tasterstatus1 = digitalRead(endschalter1); //Aktiv wen Blau vorne ist
  tasterstatus2 = digitalRead(endschalter2); //Aktiv wen Grau vorne ist

  if (anfangsstellung == 0) {
    Anfangsstellung();
  }

  if (booleanBlauGrau == 1) {
    setBlauGrau();
  }

  if (booleanGrauBlau == 1) {
    GrauBlau();
  }
}


void Anfangsstellung() {
  digitalWrite(relais1pin, HIGH);
  digitalWrite(relais2pin, LOW);

  if (tasterstatus2 == 0) {
    digitalWrite(relais1pin, LOW);
    digitalWrite(relais2pin, LOW);
    anfangsstellung = 1;
    booleanBlauGrau = 1;
    booleanGrauBlau = 0;
    Warten();

  }
}

void Warten() {
  
  delay(5000);
  
  CheckRichtung();

}

void CheckRichtung() {
  if (booleanBlauGrau == 1) {
    setBlauGrau();
    
  }
  if (booleanGrauBlau == 1) {
    GrauBlau();
    
  }
}

void GrauBlau() {
  digitalWrite(relais1pin, HIGH);
  digitalWrite(relais2pin, LOW);

  if (tasterstatus2 == LOW) {
    digitalWrite(relais1pin, LOW);
    digitalWrite(relais2pin, LOW);

    booleanBlauGrau = 1;
    booleanGrauBlau = 0;
    Warten();
  }
}

void setBlauGrau() {
  digitalWrite(relais1pin, LOW);
  digitalWrite(relais2pin, HIGH);

  if (tasterstatus1 == LOW) {
    digitalWrite(relais1pin, LOW);
    digitalWrite(relais2pin, LOW);

    booleanBlauGrau = 0;
    booleanGrauBlau = 1;
    Warten();
  }

}
NOCOMNCVCCGNDINLED1PWRRelay Module
NOCOMNCVCCGNDINLED1PWRRelay Module