#define S0 7 // Halt
#define S1 0 // Öffnen
#define S2 1 // Schließen
#define S3 2 // Tür offen
#define S4 3 // Tür geschlossen
#define S5 4 // Lichtschranke
#define M1 8 // öffnen
#define M2 9 // schließen
unsigned long startmillis;
bool S0x,S1x,S2x,S3x,S4x,S5x;
bool M1x,M2x,Merker;
void setup() {
pinMode(S0, INPUT_PULLUP);
pinMode(S1, INPUT_PULLUP);
pinMode(S2, INPUT_PULLUP);
pinMode(S3, INPUT_PULLUP);
pinMode(S4, INPUT_PULLUP);
pinMode(S5, INPUT_PULLUP);
pinMode(M1, OUTPUT);
pinMode(M2, OUTPUT);
}
void loop() {
S0x = !digitalRead(S0);
S1x = !digitalRead(S1);
S2x = !digitalRead(S2);
S3x = !digitalRead(S3);
S4x = !digitalRead(S4);
S5x = !digitalRead(S5);
if (S0x or S3x){
digitalWrite(M1, LOW);
M1x = 0;
}
if (S0x or S4x or S5x){
digitalWrite(M2, LOW);
}
if (S1x and !S0x and !S5x and !M2x){
digitalWrite(M1, HIGH);
M1x = 1;
}
if (S2x and !S0x and !S5x and !M1x or !S5x and M2x or ((millis()- startmillis>=6000) and S3x)){
digitalWrite(M2, HIGH);
M2x = 1;
}
if (S0x or S4x){
M2x = false;
}
if (S3x){
if (Merker=0){
startmillis = millis();
Merker = 1;
}
}
}