state-handler: format and prepare for timer
This commit is contained in:
parent
995773577e
commit
6cfaca32c8
@ -49,6 +49,7 @@
|
|||||||
<listOptionValue builtIn="false" value=""${workspace_loc://inc}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc://inc}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/DigitalIoPin/inc}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/DigitalIoPin/inc}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/LiquidCrystal/inc}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/LiquidCrystal/inc}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/Timer/inc}""/>
|
||||||
</option>
|
</option>
|
||||||
<option id="com.crt.advproject.cpp.misc.dialect.1047276372" name="Language standard" superClass="com.crt.advproject.cpp.misc.dialect" useByScannerDiscovery="true" value="com.crt.advproject.misc.dialect.c++11" valueType="enumerated"/>
|
<option id="com.crt.advproject.cpp.misc.dialect.1047276372" name="Language standard" superClass="com.crt.advproject.cpp.misc.dialect" useByScannerDiscovery="true" value="com.crt.advproject.misc.dialect.c++11" valueType="enumerated"/>
|
||||||
<inputType id="com.crt.advproject.compiler.cpp.input.1472075573" superClass="com.crt.advproject.compiler.cpp.input"/>
|
<inputType id="com.crt.advproject.compiler.cpp.input.1472075573" superClass="com.crt.advproject.compiler.cpp.input"/>
|
||||||
@ -73,6 +74,7 @@
|
|||||||
<listOptionValue builtIn="false" value=""${workspace_loc://inc}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc://inc}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/DigitalIoPin/inc}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/DigitalIoPin/inc}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/LiquidCrystal/inc}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/LiquidCrystal/inc}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/Timer/inc}""/>
|
||||||
</option>
|
</option>
|
||||||
<option id="com.crt.advproject.c.misc.dialect.1367957643" name="Language standard" superClass="com.crt.advproject.c.misc.dialect" useByScannerDiscovery="true" value="com.crt.advproject.misc.dialect.c11" valueType="enumerated"/>
|
<option id="com.crt.advproject.c.misc.dialect.1367957643" name="Language standard" superClass="com.crt.advproject.c.misc.dialect" useByScannerDiscovery="true" value="com.crt.advproject.misc.dialect.c11" valueType="enumerated"/>
|
||||||
<option id="com.crt.advproject.gcc.hdrlib.1476293714" name="Library headers" superClass="com.crt.advproject.gcc.hdrlib" useByScannerDiscovery="false" value="Newlib" valueType="enumerated"/>
|
<option id="com.crt.advproject.gcc.hdrlib.1476293714" name="Library headers" superClass="com.crt.advproject.gcc.hdrlib" useByScannerDiscovery="false" value="Newlib" valueType="enumerated"/>
|
||||||
@ -90,6 +92,7 @@
|
|||||||
<listOptionValue builtIn="false" value=""${workspace_loc://inc}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc://inc}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/DigitalIoPin/inc}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/DigitalIoPin/inc}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/LiquidCrystal/inc}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/LiquidCrystal/inc}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/Timer/inc}""/>
|
||||||
</option>
|
</option>
|
||||||
<option id="com.crt.advproject.gas.hdrlib.925707249" name="Library headers" superClass="com.crt.advproject.gas.hdrlib" value="Newlib" valueType="enumerated"/>
|
<option id="com.crt.advproject.gas.hdrlib.925707249" name="Library headers" superClass="com.crt.advproject.gas.hdrlib" value="Newlib" valueType="enumerated"/>
|
||||||
<option id="com.crt.advproject.gas.specs.1146689581" name="Specs" superClass="com.crt.advproject.gas.specs" value="com.crt.advproject.gas.specs.newlib" valueType="enumerated"/>
|
<option id="com.crt.advproject.gas.specs.1146689581" name="Specs" superClass="com.crt.advproject.gas.specs" value="com.crt.advproject.gas.specs.newlib" valueType="enumerated"/>
|
||||||
@ -153,6 +156,7 @@
|
|||||||
<listOptionValue builtIn="false" value=""${workspace_loc://inc}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc://inc}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/DigitalIoPin/inc}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/DigitalIoPin/inc}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/LiquidCrystal/inc}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/LiquidCrystal/inc}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/Timer/inc}""/>
|
||||||
</option>
|
</option>
|
||||||
<option id="com.crt.advproject.cpp.misc.dialect.2103564035" name="Language standard" superClass="com.crt.advproject.cpp.misc.dialect" useByScannerDiscovery="true" value="com.crt.advproject.misc.dialect.c++11" valueType="enumerated"/>
|
<option id="com.crt.advproject.cpp.misc.dialect.2103564035" name="Language standard" superClass="com.crt.advproject.cpp.misc.dialect" useByScannerDiscovery="true" value="com.crt.advproject.misc.dialect.c++11" valueType="enumerated"/>
|
||||||
<option id="com.crt.advproject.cpp.hdrlib.1905759872" name="Library headers" superClass="com.crt.advproject.cpp.hdrlib" useByScannerDiscovery="false" value="Newlib" valueType="enumerated"/>
|
<option id="com.crt.advproject.cpp.hdrlib.1905759872" name="Library headers" superClass="com.crt.advproject.cpp.hdrlib" useByScannerDiscovery="false" value="Newlib" valueType="enumerated"/>
|
||||||
@ -178,6 +182,7 @@
|
|||||||
<listOptionValue builtIn="false" value=""${workspace_loc://inc}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc://inc}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/DigitalIoPin/inc}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/DigitalIoPin/inc}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/LiquidCrystal/inc}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/LiquidCrystal/inc}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/Timer/inc}""/>
|
||||||
</option>
|
</option>
|
||||||
<option id="com.crt.advproject.c.misc.dialect.1578394517" name="Language standard" superClass="com.crt.advproject.c.misc.dialect" useByScannerDiscovery="true" value="com.crt.advproject.misc.dialect.c11" valueType="enumerated"/>
|
<option id="com.crt.advproject.c.misc.dialect.1578394517" name="Language standard" superClass="com.crt.advproject.c.misc.dialect" useByScannerDiscovery="true" value="com.crt.advproject.misc.dialect.c11" valueType="enumerated"/>
|
||||||
<option id="com.crt.advproject.gcc.hdrlib.339012185" name="Library headers" superClass="com.crt.advproject.gcc.hdrlib" useByScannerDiscovery="false" value="Newlib" valueType="enumerated"/>
|
<option id="com.crt.advproject.gcc.hdrlib.339012185" name="Library headers" superClass="com.crt.advproject.gcc.hdrlib" useByScannerDiscovery="false" value="Newlib" valueType="enumerated"/>
|
||||||
@ -195,6 +200,7 @@
|
|||||||
<listOptionValue builtIn="false" value=""${workspace_loc://inc}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc://inc}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/DigitalIoPin/inc}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/DigitalIoPin/inc}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/LiquidCrystal/inc}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/LiquidCrystal/inc}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/Timer/inc}""/>
|
||||||
</option>
|
</option>
|
||||||
<option id="com.crt.advproject.gas.hdrlib.1849085416" name="Library headers" superClass="com.crt.advproject.gas.hdrlib" value="Newlib" valueType="enumerated"/>
|
<option id="com.crt.advproject.gas.hdrlib.1849085416" name="Library headers" superClass="com.crt.advproject.gas.hdrlib" value="Newlib" valueType="enumerated"/>
|
||||||
<option id="com.crt.advproject.gas.specs.451573115" name="Specs" superClass="com.crt.advproject.gas.specs" value="com.crt.advproject.gas.specs.newlib" valueType="enumerated"/>
|
<option id="com.crt.advproject.gas.specs.451573115" name="Specs" superClass="com.crt.advproject.gas.specs" value="com.crt.advproject.gas.specs.newlib" valueType="enumerated"/>
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
<project>lpc_chip_15xx</project>
|
<project>lpc_chip_15xx</project>
|
||||||
<project>DigitalIoPin</project>
|
<project>DigitalIoPin</project>
|
||||||
<project>LiquidCrystal</project>
|
<project>LiquidCrystal</project>
|
||||||
|
<project>Timer</project>
|
||||||
</projects>
|
</projects>
|
||||||
<buildSpec>
|
<buildSpec>
|
||||||
<buildCommand>
|
<buildCommand>
|
||||||
|
|||||||
@ -18,11 +18,11 @@
|
|||||||
#include "Counter.h"
|
#include "Counter.h"
|
||||||
#include "DigitalIoPin.h"
|
#include "DigitalIoPin.h"
|
||||||
#include "Event.h"
|
#include "Event.h"
|
||||||
|
#include "GMP252.h"
|
||||||
|
#include "HMP60.h"
|
||||||
#include "LiquidCrystal.h"
|
#include "LiquidCrystal.h"
|
||||||
#include "ModbusMaster.h"
|
#include "ModbusMaster.h"
|
||||||
#include "ModbusRegister.h"
|
#include "ModbusRegister.h"
|
||||||
#include "GMP252.h"
|
|
||||||
#include "HMP60.h"
|
|
||||||
#include "PressureWrapper.h"
|
#include "PressureWrapper.h"
|
||||||
|
|
||||||
/** Buttons enumeration
|
/** Buttons enumeration
|
||||||
@ -76,7 +76,8 @@ typedef void (StateHandler::*state_pointer) (const Event &);
|
|||||||
class StateHandler
|
class StateHandler
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
StateHandler (LiquidCrystal *lcd, ModbusRegister *A01, PressureWrapper *pressure);
|
StateHandler (LiquidCrystal *lcd, ModbusRegister *A01,
|
||||||
|
PressureWrapper *pressure);
|
||||||
virtual ~StateHandler ();
|
virtual ~StateHandler ();
|
||||||
|
|
||||||
/** Get currently set pressure
|
/** Get currently set pressure
|
||||||
|
|||||||
@ -8,7 +8,8 @@
|
|||||||
#include <StateHandler.h>
|
#include <StateHandler.h>
|
||||||
#define PID 0
|
#define PID 0
|
||||||
|
|
||||||
StateHandler::StateHandler (LiquidCrystal *lcd, ModbusRegister *A01, PressureWrapper *pressure)
|
StateHandler::StateHandler (LiquidCrystal *lcd, ModbusRegister *A01,
|
||||||
|
PressureWrapper *pressure)
|
||||||
{
|
{
|
||||||
this->_lcd = lcd;
|
this->_lcd = lcd;
|
||||||
this->A01 = A01;
|
this->A01 = A01;
|
||||||
@ -143,10 +144,13 @@ StateHandler::stateAuto (const Event &event)
|
|||||||
this->A01->write (fan_speed.getCurrent ());
|
this->A01->write (fan_speed.getCurrent ());
|
||||||
#endif
|
#endif
|
||||||
#if !PID
|
#if !PID
|
||||||
if(saved_curr_value[AUTO] < saved_set_value[AUTO]) {
|
if (saved_curr_value[AUTO] < saved_set_value[AUTO])
|
||||||
|
{
|
||||||
fan_speed.inc ();
|
fan_speed.inc ();
|
||||||
this->A01->write (fan_speed.getCurrent ());
|
this->A01->write (fan_speed.getCurrent ());
|
||||||
} else if(saved_curr_value[AUTO] > saved_set_value[AUTO]){
|
}
|
||||||
|
else if (saved_curr_value[AUTO] > saved_set_value[AUTO])
|
||||||
|
{
|
||||||
fan_speed.dec ();
|
fan_speed.dec ();
|
||||||
this->A01->write (fan_speed.getCurrent ());
|
this->A01->write (fan_speed.getCurrent ());
|
||||||
}
|
}
|
||||||
@ -174,8 +178,10 @@ StateHandler::stateSensors (const Event &event)
|
|||||||
#if 1
|
#if 1
|
||||||
char line_up[16] = { 0 };
|
char line_up[16] = { 0 };
|
||||||
char line_down[16] = { 0 };
|
char line_down[16] = { 0 };
|
||||||
snprintf (line_up, 16, "PRE:%02d TEM:%02d", sensors_data[PRESSUREDAT],sensors_data[TEMPERATURE]);
|
snprintf (line_up, 16, "PRE:%02d TEM:%02d", sensors_data[PRESSUREDAT],
|
||||||
snprintf (line_down, 16, "HUM:%02d CO2:%02d", sensors_data[HUMIDITY], sensors_data[CO2]);
|
sensors_data[TEMPERATURE]);
|
||||||
|
snprintf (line_down, 16, "HUM:%02d CO2:%02d", sensors_data[HUMIDITY],
|
||||||
|
sensors_data[CO2]);
|
||||||
|
|
||||||
_lcd->clear ();
|
_lcd->clear ();
|
||||||
_lcd->setCursor (0, 0);
|
_lcd->setCursor (0, 0);
|
||||||
@ -183,7 +189,8 @@ StateHandler::stateSensors (const Event &event)
|
|||||||
_lcd->setCursor (0, 1);
|
_lcd->setCursor (0, 1);
|
||||||
_lcd->print (line_down);
|
_lcd->print (line_down);
|
||||||
#endif
|
#endif
|
||||||
SetState (current_mode? &StateHandler::stateAuto : &StateHandler::stateManual);
|
SetState (current_mode ? &StateHandler::stateAuto
|
||||||
|
: &StateHandler::stateManual);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -212,10 +219,12 @@ void
|
|||||||
StateHandler::save (int eventValue, size_t mode)
|
StateHandler::save (int eventValue, size_t mode)
|
||||||
{
|
{
|
||||||
/* if pressure is not provided from main it checks it in following if{}*/
|
/* if pressure is not provided from main it checks it in following if{}*/
|
||||||
if(!eventValue) {
|
if (!eventValue)
|
||||||
|
{
|
||||||
/* Small delay for modbus communications with pressure sensor */
|
/* Small delay for modbus communications with pressure sensor */
|
||||||
int i = 0;
|
int i = 0;
|
||||||
while(i<720) i++;
|
while (i < 720)
|
||||||
|
i++;
|
||||||
i = 0;
|
i = 0;
|
||||||
eventValue = pressure->getPressure ();
|
eventValue = pressure->getPressure ();
|
||||||
}
|
}
|
||||||
@ -229,7 +238,9 @@ StateHandler::save (int eventValue, size_t mode)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void StateHandler::pid () {
|
void
|
||||||
|
StateHandler::pid ()
|
||||||
|
{
|
||||||
float kP = 0.1, kI = 0.01, kD = 0.01;
|
float kP = 0.1, kI = 0.01, kD = 0.01;
|
||||||
int error = 0, last_error = 0, derivative = 0;
|
int error = 0, last_error = 0, derivative = 0;
|
||||||
error = saved_set_value[AUTO] - saved_curr_value[AUTO];
|
error = saved_set_value[AUTO] - saved_curr_value[AUTO];
|
||||||
@ -238,4 +249,3 @@ void StateHandler::pid () {
|
|||||||
derivative = error - last_error;
|
derivative = error - last_error;
|
||||||
fan_speed.setInit ((kP * error) + (kI * integral) + (kD * derivative));
|
fan_speed.setInit ((kP * error) + (kI * integral) + (kD * derivative));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user