#define Tu 3
#define To 2
#define Lu 6
#define Lo 5
int z = 5;
int t = 0;
int s = 1;
void setup() {
pinMode(Tu, INPUT_PULLUP);
pinMode(To, INPUT_PULLUP);
pinMode(Lu, OUTPUT);
pinMode(Lo, OUTPUT);
}
void loop() {
switch(s){
case 0:
digitalWrite(Lo, LOW);
digitalWrite(Lu, LOW);
if(digitalRead(Tu)==LOW){
s = 2;
}
else if(digitalRead(To)==LOW){
s = 4;
}
break;
//Rollo oben wartet bis schließen
case 1:
digitalWrite(Lo, HIGH);
//Tasterabfrage
if(digitalRead(Tu)==LOW){
digitalWrite(Lo, LOW);
s = 2;
}
break;
//Rollo im Betrieb kann durch taste gestoppt werden
case 2:
if((digitalRead(Tu)==LOW) || (digitalRead(To)==LOW)){
t = 0;
s = 0;
}
if(((t >= 0) && (t < 5)) && (z != 0)){
digitalWrite(Lu, HIGH);
t++;
}
else if(((t >= 5) && (t < 10)) && (z != 0)){
digitalWrite(Lu, LOW);
t++;
}
else if(t >= 10){
z--;
t = 0;
}
if(z == 0){
s = 3;
}
break;
//Rollo unten wartet bis öffnen
case 3:
digitalWrite(Lu, HIGH);
if(digitalRead(To)==LOW){
digitalWrite(Lu, LOW);
s = 4;
}
break;
//Rollo in betrieb kann gestoppt werden
case 4:
if((digitalRead(Tu)==LOW) || (digitalRead(To)==LOW)){
t = 0;
s = 0;
}
if(((t >= 0) && (t < 5)) && (z != 5)){
digitalWrite(Lo, HIGH);
t++;
}
else if(((t >= 5) && (t < 10)) && (z != 5)){
digitalWrite(Lo, LOW);
t++;
}
else if(t >= 10){
z++;
t = 0;
}
if(z == 5){
s = 1;
}
break;
}
delay(100);
}