diff --git a/StateHandler/inc/StateHandler.h b/StateHandler/inc/StateHandler.h index 174d53f..97288d5 100644 --- a/StateHandler/inc/StateHandler.h +++ b/StateHandler/inc/StateHandler.h @@ -105,6 +105,7 @@ private: void SetState (state_pointer newstate); bool current_mode; Counter value[2] = { { 0, 100 }, { 0, 120 } }; + Counter fan_speed = {80, 1000}; int saved_set_value[2] = { 0, 0 }; int saved_curr_value[2] = { 0, 0 }; LiquidCrystal *_lcd; @@ -148,6 +149,11 @@ private: * @param mode current mode */ void save (int eventValue, int counterValue, size_t mode); + + /** Calculates pid for fan control value + * + */ + void pid (); }; #endif /* STATE_HANDLER_H_ */ diff --git a/StateHandler/src/StateHandler.cpp b/StateHandler/src/StateHandler.cpp index 535f1d1..53c104a 100644 --- a/StateHandler/src/StateHandler.cpp +++ b/StateHandler/src/StateHandler.cpp @@ -104,6 +104,7 @@ StateHandler::stateManual (const Event &event) { case Event::eEnter: displaySet (saved_set_value[MANUAL], saved_curr_value[MANUAL]); + this->A01->write(this->value[FAN_SPEED].getCurrent ()); break; case Event::eExit: _lcd->clear (); @@ -133,6 +134,13 @@ StateHandler::stateAuto (const Event &event) break; case Event::eTick: save (event.value, value[AUTO].getCurrent (), AUTO); + if(saved_curr_value[AUTO] < saved_set_value[AUTO]) { + fan_speed.inc(); + this->A01->write(fan_speed.getCurrent()); + } else if(saved_curr_value[AUTO] > saved_set_value[AUTO]){ + fan_speed.dec(); + this->A01->write(fan_speed.getCurrent()); + } break; } } @@ -172,3 +180,10 @@ StateHandler::save (int eventValue, int counterValue, size_t mode) displaySet (saved_set_value[mode], saved_curr_value[mode]); } } + +void StateHandler::pid () { + int integral = 0, error = 0; + error = saved_curr_value[AUTO] - saved_set_value[AUTO]; + +} + diff --git a/esp-vent-main/src/PressureWrapper.cpp b/esp-vent-main/src/PressureWrapper.cpp index 1bebb57..e5cd2e6 100644 --- a/esp-vent-main/src/PressureWrapper.cpp +++ b/esp-vent-main/src/PressureWrapper.cpp @@ -39,7 +39,7 @@ int PressureWrapper::getPressure() { int16_t pressure = 0; if(!getRawPressure ()) { unsigned int i = 0; - while(i<7200000) i++; + while(i<7200) i++; getRawPressure (); i = 0; }