#include // die Lib findest du selber ;-) Print &cout = Serial; // cout Emulation für "Arme" using Zustand = void(*)(); constexpr byte startTaster {SCK}; constexpr byte endschalterScharnierAuf {MISO}; constexpr byte endschalterKlappeUnten {MOSI}; constexpr byte endschalterKlappeOben {SS}; //constexpr byte freigabeAbsaugung {9}; // ???????????? constexpr byte absaugungEin {A4}; constexpr byte ventilKlappeAuf {A3}; constexpr byte ventilKlappeZu {A2}; constexpr byte ventilScharnierAuf {A1}; constexpr byte ventilScharnierZu {A0}; void zInit(); Zustand zustand {zInit}; void setup() { Serial.begin(9600); cout << F("Start: ") << F(__FILE__) << endl; } void loop() { zustand(); } // --------------------------------------- void zInit() { cout << __FUNCTION__ << endl; pinMode(endschalterKlappeOben,INPUT); pinMode(endschalterKlappeUnten,INPUT); pinMode(endschalterScharnierAuf,INPUT); pinMode(startTaster,INPUT); pinMode(ventilKlappeAuf,OUTPUT); pinMode(ventilKlappeZu,OUTPUT); pinMode(ventilScharnierAuf,OUTPUT); pinMode(ventilScharnierZu,OUTPUT); pinMode(absaugungEin,OUTPUT); zustand = zC1; } void zC1() { cout << __FUNCTION__ << endl; if(digitalRead(startTaster)) zustand = zC2; } void zC2() { cout << __FUNCTION__ << endl; zustand = digitalRead(absaugungEin)?zD3:zB3; } void zB3() { cout << __FUNCTION__ << endl; zustand = digitalRead(ventilKlappeAuf)?zA3:zB4; } void zD3() { cout << __FUNCTION__ << endl; digitalWrite(absaugungEin,0); delay(4000); zustand = zB3; } void zB4() { cout << __FUNCTION__ << endl; zustand = digitalRead(endschalterKlappeUnten)?zD4:zB6; } void zB6() { cout << __FUNCTION__ << endl; zustand = digitalRead(endschalterScharnierAuf)?zC6:zB7; } void zA3() { cout << __FUNCTION__ << endl; zustand = digitalRead(endschalterScharnierAuf)?zA5:zA4; } void zC6() { cout << __FUNCTION__ << endl; while(!digitalRead(endschalterKlappeUnten)) { digitalWrite(ventilKlappeZu,1); delay(100); digitalWrite(ventilKlappeZu,0); delay(500); } zustand = zD6; } void zA4() { cout << __FUNCTION__ << endl; digitalWrite(ventilScharnierAuf,1); if(digitalRead(endschalterScharnierAuf)) { digitalWrite(ventilScharnierAuf,0); zustand = zA5; } } void zB7() { cout << __FUNCTION__ << endl; digitalWrite(ventilScharnierAuf,1); if(digitalRead(endschalterScharnierAuf)) { digitalWrite(ventilScharnierAuf,0); zustand = zC6; } } void zD4() { cout << __FUNCTION__ << endl; digitalWrite(ventilScharnierAuf,1); if(digitalRead(endschalterScharnierAuf)) { digitalWrite(ventilScharnierAuf,0); zustand = zE4; } } void zA5() { cout << __FUNCTION__ << endl; digitalWrite(ventilKlappeZu,1); if(digitalRead(endschalterKlappeUnten)) { digitalWrite(ventilKlappeZu,0); zustand = zA6; } } void zA6() { cout << __FUNCTION__ << endl; digitalWrite(ventilScharnierZu,1); delay(3000); digitalWrite(ventilScharnierZu,0); zustand = zA7; } void zD6() { cout << __FUNCTION__ << endl; digitalWrite(ventilScharnierZu,1); delay(3000); digitalWrite(ventilScharnierZu,0); zustand = zD7; } void zE4() { cout << __FUNCTION__ << endl; digitalWrite(ventilKlappeAuf,1); if(digitalRead(endschalterKlappeOben)) { digitalWrite(ventilKlappeAuf,0); zustand = zE5; } } void zA7() { cout << __FUNCTION__ << endl; digitalWrite(absaugungEin,1); zustand = zA8; } void zD7() { cout << __FUNCTION__ << endl; digitalWrite(absaugungEin,1); zustand = zD8; } void zA8() { cout << __FUNCTION__ << " Ende1" << endl; } void zE5() { cout << __FUNCTION__ << " Ende2" << endl; } void zD8() { cout << __FUNCTION__ << " Ende3" << endl; }