StateHandler: stateAuto: fan speed control by changing pressure value. Without PID regulation.
This commit is contained in:
parent
4a414ea70f
commit
2de40ba7c0
@ -105,6 +105,7 @@ private:
|
|||||||
void SetState (state_pointer newstate);
|
void SetState (state_pointer newstate);
|
||||||
bool current_mode;
|
bool current_mode;
|
||||||
Counter value[2] = { { 0, 100 }, { 0, 120 } };
|
Counter value[2] = { { 0, 100 }, { 0, 120 } };
|
||||||
|
Counter fan_speed = {80, 1000};
|
||||||
int saved_set_value[2] = { 0, 0 };
|
int saved_set_value[2] = { 0, 0 };
|
||||||
int saved_curr_value[2] = { 0, 0 };
|
int saved_curr_value[2] = { 0, 0 };
|
||||||
LiquidCrystal *_lcd;
|
LiquidCrystal *_lcd;
|
||||||
@ -148,6 +149,11 @@ private:
|
|||||||
* @param mode current mode
|
* @param mode current mode
|
||||||
*/
|
*/
|
||||||
void save (int eventValue, int counterValue, size_t mode);
|
void save (int eventValue, int counterValue, size_t mode);
|
||||||
|
|
||||||
|
/** Calculates pid for fan control value
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void pid ();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* STATE_HANDLER_H_ */
|
#endif /* STATE_HANDLER_H_ */
|
||||||
|
|||||||
@ -104,6 +104,7 @@ StateHandler::stateManual (const Event &event)
|
|||||||
{
|
{
|
||||||
case Event::eEnter:
|
case Event::eEnter:
|
||||||
displaySet (saved_set_value[MANUAL], saved_curr_value[MANUAL]);
|
displaySet (saved_set_value[MANUAL], saved_curr_value[MANUAL]);
|
||||||
|
this->A01->write(this->value[FAN_SPEED].getCurrent ());
|
||||||
break;
|
break;
|
||||||
case Event::eExit:
|
case Event::eExit:
|
||||||
_lcd->clear ();
|
_lcd->clear ();
|
||||||
@ -133,6 +134,13 @@ StateHandler::stateAuto (const Event &event)
|
|||||||
break;
|
break;
|
||||||
case Event::eTick:
|
case Event::eTick:
|
||||||
save (event.value, value[AUTO].getCurrent (), AUTO);
|
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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -172,3 +180,10 @@ StateHandler::save (int eventValue, int counterValue, size_t mode)
|
|||||||
displaySet (saved_set_value[mode], saved_curr_value[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];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@ -39,7 +39,7 @@ int PressureWrapper::getPressure() {
|
|||||||
int16_t pressure = 0;
|
int16_t pressure = 0;
|
||||||
if(!getRawPressure ()) {
|
if(!getRawPressure ()) {
|
||||||
unsigned int i = 0;
|
unsigned int i = 0;
|
||||||
while(i<7200000) i++;
|
while(i<7200) i++;
|
||||||
getRawPressure ();
|
getRawPressure ();
|
||||||
i = 0;
|
i = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user