diff --git a/Arduino/motor/src/KlappenAblauf.cpp b/Arduino/motor/src/KlappenAblauf.cpp index f6c3b7d..0313f60 100644 --- a/Arduino/motor/src/KlappenAblauf.cpp +++ b/Arduino/motor/src/KlappenAblauf.cpp @@ -7,78 +7,94 @@ KlappenAblauf::~KlappenAblauf() } -statusKlappen KlappenAblauf::setOpen(bool open) +void KlappenAblauf::setOpen(bool open) { - if(aktuellerState == WARTE){ - if(open) - aktuellerState = START_AUF; - else - aktuellerState = START_ZU; - return OK; - } + openSpeicher = open; - return ERROR_BUSY; } -statusKlappen KlappenAblauf::setOpen(bool open , int id) +void KlappenAblauf::setOpen(bool open , int id) { KlappenAblauf *zeiger; zeiger = (KlappenAblauf *) searchIdElement(id); if(zeiger) return zeiger->setOpen(open); - return ERROR_ID; } void KlappenAblauf::memberSetup(){ + AnalogDigital::memberSetup(); + openSpeicher = false; fsmInit(); } void KlappenAblauf::memberLoop(){ AnalogDigital::memberLoop(); + openSpeicherAbfrage(); fsmStep(); } void KlappenAblauf::fsmInit(){ aktuellerState = INIT; + + } +void KlappenAblauf::openSpeicherAbfrage(){ + if(openSpeicher){ + if(aktuellerState == WARTE_GESCHLOSSEN){ + aktuellerState = START_AUF; + } + }else{ + if(aktuellerState == WARTE_OFFEN){ + aktuellerState = START_ZU; + } + } + +} + + void KlappenAblauf::fsmStep(){ switch (aktuellerState) { case INIT: - aktuellerState = WARTE; + aktuellerState = START_ZU; break; - case WARTE: + case WARTE_OFFEN: + case WARTE_GESCHLOSSEN: break; case START_AUF: setMotorAktion(1); timer = 5000; - aktuellerState = FAEHRT; + aktuellerState = FAEHRT_AUF; break; case START_ZU: setMotorAktion(-1); timer = 5000; - aktuellerState = FAEHRT; + aktuellerState = FAEHRT_ZU; break; - case FAEHRT: + case FAEHRT_AUF: timer -= getDeltamsec(); if(timer <= 0){ setMotorAktion(0); - aktuellerState = FERTIG; + aktuellerState = WARTE_OFFEN; } break; - case FERTIG: - aktuellerState = WARTE; + case FAEHRT_ZU: + timer -= getDeltamsec(); + if(timer <= 0){ + setMotorAktion(0); + aktuellerState = WARTE_GESCHLOSSEN; + } break; default: diff --git a/Arduino/motor/src/KlappenAblauf.h b/Arduino/motor/src/KlappenAblauf.h index 6f934b9..0e2eabf 100644 --- a/Arduino/motor/src/KlappenAblauf.h +++ b/Arduino/motor/src/KlappenAblauf.h @@ -36,13 +36,13 @@ public: /** * @param open */ - statusKlappen setOpen(bool open); - static statusKlappen setOpen(bool open , int id); + void setOpen(bool open); + static void setOpen(bool open , int id); protected: - void memberSetup(); - void memberLoop(); + virtual void memberSetup(); + virtual void memberLoop(); // Static Protected attributes // @@ -53,13 +53,19 @@ protected: private: int16_t timer; + + bool openSpeicher; + void openSpeicherAbfrage(); typedef enum fsmStatesEnum{ INIT, - WARTE, - START_AUF, + + WARTE_OFFEN, START_ZU, - FAEHRT, - FERTIG, + FAEHRT_ZU, + + WARTE_GESCHLOSSEN, + START_AUF, + FAEHRT_AUF, }fsmStates; diff --git a/Arduino/motor/src/arduinoAnpassung.cpp b/Arduino/motor/src/arduinoAnpassung.cpp index a61b14c..3e804b9 100644 --- a/Arduino/motor/src/arduinoAnpassung.cpp +++ b/Arduino/motor/src/arduinoAnpassung.cpp @@ -21,6 +21,7 @@ void ArduinoAnpassung::setup(){ while(zeiger){ ((ArduinoAnpassung*)zeiger)->memberSetup(); zeiger = zeiger->getNachfolgerElement(); + } } diff --git a/Arduino/motor/src/arduinoAnpassung.h b/Arduino/motor/src/arduinoAnpassung.h index cf0ec91..d78fd88 100644 --- a/Arduino/motor/src/arduinoAnpassung.h +++ b/Arduino/motor/src/arduinoAnpassung.h @@ -15,8 +15,8 @@ public: static void setup(); static void loop(); -void memberSetup(); -void memberLoop(); +virtual void memberSetup(); +virtual void memberLoop(); static unsigned int getDeltamsec(); diff --git a/Arduino/motor/src/main.cpp b/Arduino/motor/src/main.cpp index 128eb44..5d6093f 100644 --- a/Arduino/motor/src/main.cpp +++ b/Arduino/motor/src/main.cpp @@ -8,13 +8,8 @@ void Ablauf(); void AblaufSekunde(); KlappenSteuerung klappe1 (M1A , M1B , M1SENSE , 5 ); - - - - - -//KlappenSteuerung klappe2 (M2A , M2B , M2SENSE , 2 ); -//KlappenSteuerung klappe3 (M3A , M3B , M3SENSE , 23 ); +KlappenSteuerung klappe2 (M2A , M2B , M2SENSE , 2 ); +KlappenSteuerung klappe3 (M3A , M3B , M3SENSE , 23 ); //KlappenSteuerung klappe4 (M4A , M4B , M4SENSE , 1 ); @@ -25,6 +20,8 @@ void setup() { KlappenSteuerung::setMotorPwmPin(TIMER1_PWM_PIN); KlappenSteuerung::setup(); pinMode(LED_BUILTIN , OUTPUT); + pinMode(TASTER_AUF , INPUT_PULLUP); + pinMode(TASTER_ZU , INPUT_PULLUP); } void loop() { @@ -34,32 +31,10 @@ void loop() { } void Ablauf(){ - static unsigned int summeZeit; + if(!digitalRead(TASTER_AUF)) + KlappenSteuerung::setOpen(true , 5); - summeZeit += KlappenSteuerung::getDeltamsec(); - if(summeZeit >= 1000){ // eine Sekunde - summeZeit -= 1000; - AblaufSekunde(); - } - - -} - -void AblaufSekunde(){ - static unsigned int sekunden; - sekunden ++; - //digitalWrite(LED_BUILTIN , !(sekunden & 3)); - switch(sekunden){ - case 1: - KlappenSteuerung::setOpen(true , 5); - break; - - case 11: + if(!digitalRead(TASTER_ZU)) KlappenSteuerung::setOpen(false , 5); - break; - - case 20: - sekunden = 0; - break; - } } + diff --git a/Arduino/motor/src/motor.cpp b/Arduino/motor/src/motor.cpp index 49cdc8a..114702f 100644 --- a/Arduino/motor/src/motor.cpp +++ b/Arduino/motor/src/motor.cpp @@ -38,12 +38,15 @@ void Motor::setMotorAktion(int8_t richtung){ if(richtung > 0){ digitalWrite( pinA , 1); digitalWrite( pinB , 0); + digitalWrite(LED_BUILTIN , 1); }else if(richtung < 0){ digitalWrite( pinA , 0); digitalWrite( pinB , 1); + digitalWrite(LED_BUILTIN , 1); }else{ - digitalWrite( pinA , 1); + digitalWrite( pinA , 0); digitalWrite( pinB , 0); + digitalWrite(LED_BUILTIN , 0); } } diff --git a/Arduino/motor/src/motor.h b/Arduino/motor/src/motor.h index 22e03e7..7efb65c 100644 --- a/Arduino/motor/src/motor.h +++ b/Arduino/motor/src/motor.h @@ -27,7 +27,7 @@ protected: static uint8_t pinPwm; - void memberSetup(); + virtual void memberSetup(); //static void interruptEinsprung(); diff --git a/Arduino/motor/src/pins.h b/Arduino/motor/src/pins.h index e16f3b7..a89bd6c 100644 --- a/Arduino/motor/src/pins.h +++ b/Arduino/motor/src/pins.h @@ -20,13 +20,16 @@ #define M4B 10 #define M4SENSE A4 -#define M5A 11 -#define M5B 12 -#define M5SENSE A5 +//#define M5A 11 +//#define M5B 12 +//#define M5SENSE A5 -#define M6A 13 -#define M6B 14 -#define M6SENSE A6 +//#define M6A 13 // LED_BULDIN +//#define M6B 14 +//#define M6SENSE A6 + +#define TASTER_AUF 11 +#define TASTER_ZU 12