/* * RouterElevator.h * * Created on: 12.02.2022 * Author: FSmilari */ #ifndef ROUTERELEVATOR_H_ #define ROUTERELEVATOR_H_ #include #include #include "Display.h" #include "WLS.h" #include "RouterSetup.h" #include "ValueMode.h" class RouterElevator { private: ESP_FlexyStepper &Stepper; Display &display; RouterSetup &Router_Setup; int previousDirection = 0; byte limitSwitchState = 1; int LimitSwitch; WLS &WlsDetect, &Wls; int DOWNWARD_DIR; int UPWARD_DIR; float targetDistance; float maxDiveDistance; ValueMode mode; bool doDiveInitialization; public: RouterElevator(ESP_FlexyStepper &_Stepper, Display &_display, RouterSetup &_Router_Setup, WLS &_WlsDetect, WLS &_Wls, int _LimitSwitch, int _DOWNWARD_DIR); void setZeroPosition(void); void moveRelativeInMillimeters(float distanceInMillimeters); void moveToLowerLimitSwitch(void); void moveToUpperLimitSwitch(void); void moveToTarget(void); void moveToParkPosition(void); void clearLimitSwitch(void); void tryReleaseLimitSwitch(void); bool isLimitSwitchTriggerd(void); bool isWLSTriggerd(void); bool isTargetPositionReached(void); void limitSwitchHandler(void); void checkDirection(void); ValueMode getMode() const; void setMode(ValueMode mode); void toggleMode(); void onRotaryControlerTurn(RotaryEncoder::Direction turn); bool isDoDiveInitialization() const; void setDoDiveInitialization(bool doDiveInitialization); float getMaxDiveDistance() const; void setMaxDiveDistance(); bool incrementDiveDistance(); }; #endif /* ROUTERELEVATOR_H_ */