added missing file
This commit is contained in:
parent
8521834143
commit
44485eac01
|
@ -0,0 +1,18 @@
|
||||||
|
// include the library code:
|
||||||
|
#include <LiquidCrystal.h>
|
||||||
|
#include <DFR_Key.h>
|
||||||
|
#include "profile.h"
|
||||||
|
#include "oven_control.h"
|
||||||
|
|
||||||
|
OvenCtl oven_ctl;
|
||||||
|
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(9600);
|
||||||
|
delay(300);
|
||||||
|
// oven_ctl.set_config_state();
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
oven_ctl.loop();
|
||||||
|
}
|
|
@ -0,0 +1,229 @@
|
||||||
|
|
||||||
|
void OvenCtl::handle_config_state() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void OvenCtl::check_max_duration() {
|
||||||
|
if (disable_checks)
|
||||||
|
return;
|
||||||
|
if (time > profile.data[PI_TIME_MAX]) {
|
||||||
|
error_condition |= E_TIME_MAX;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void OvenCtl::check_Ts_duration_min() {
|
||||||
|
if (disable_checks)
|
||||||
|
return;
|
||||||
|
Tl_time_end = time;
|
||||||
|
if (time - Tl_time_start < profile.data[PI_TL_DURATION_MIN]) {
|
||||||
|
error_condition |= E_TL_TOO_SHORT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void OvenCtl::check_Ts_duration_max() {
|
||||||
|
if (disable_checks)
|
||||||
|
return;
|
||||||
|
if (time - Ts_time_start > profile.data[PI_TL_DURATION_MAX]) {
|
||||||
|
error_condition |= E_TS_TOO_LONG;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void OvenCtl::check_Tl_duration_min() {
|
||||||
|
if (disable_checks)
|
||||||
|
return;
|
||||||
|
Tl_time_end = time;
|
||||||
|
if (time - Tl_time_start < profile.data[PI_TL_DURATION_MIN]) {
|
||||||
|
error_condition |= E_TL_TOO_SHORT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void OvenCtl::check_Tl_duration_max() {
|
||||||
|
if (disable_checks)
|
||||||
|
return;
|
||||||
|
if (time - Tl_time_start > profile.data[PI_TL_DURATION_MAX]) {
|
||||||
|
error_condition |= E_TL_TOO_LONG;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void OvenCtl::check_Tp_duration_min() {
|
||||||
|
Tp_time_end = time;
|
||||||
|
if (time - Tp_time_start < profile.data[PI_TP_DURATION_MIN]) {
|
||||||
|
error_condition |= E_TP_TOO_SHORT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void OvenCtl::check_Tp_duration_max() {
|
||||||
|
if (disable_checks)
|
||||||
|
return;
|
||||||
|
if (time - Tp_time_start > profile.data[PI_TP_DURATION_MAX]) {
|
||||||
|
error_condition |= E_TP_TOO_LONG;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void OvenCtl::set_config_state() {
|
||||||
|
profile.print_config_state_0();
|
||||||
|
}
|
||||||
|
|
||||||
|
void OvenCtl::set_start_state() {
|
||||||
|
error_condition = 0;
|
||||||
|
profile_state = START_STATE;
|
||||||
|
get_temp();
|
||||||
|
last_temperature = temperature;
|
||||||
|
actual_dt = float(temperature) - last_temperature;
|
||||||
|
set_temp(profile.data[PI_TS_MAX], profile.data[PI_TS_MAX], 0, profile.data[PI_TS_RAMP_UP_MAX]);
|
||||||
|
lcd.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void OvenCtl::set_preheat_state() {
|
||||||
|
// Serial.println("Changing profile_state to PREHEAT_STATE");
|
||||||
|
profile_state = PREHEAT_STATE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void OvenCtl::set_ramp_up_state() {
|
||||||
|
set_temp(profile.data[PI_TP_MIN], profile.data[PI_TP_DURATION_MAX], profile.data[PI_TP_RAMP_UP_MIN], profile.data[PI_TP_RAMP_UP_MAX]);
|
||||||
|
profile_state = RAMP_UP_STATE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void OvenCtl::set_tal_first_state() {
|
||||||
|
profile_state = TAL_FIRST_STATE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void OvenCtl::set_peak_state() {
|
||||||
|
profile_state = PEAK_STATE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void OvenCtl::set_tal_second_state() {
|
||||||
|
set_temp(0, 25, -3, -6);
|
||||||
|
profile_state = TAL_SECOND_STATE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void OvenCtl::set_ramp_down_state() {
|
||||||
|
profile_state = RAMP_DOWN_STATE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void OvenCtl::set_end_state() {
|
||||||
|
profile_state = END_STATE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void OvenCtl::set_error_state() {
|
||||||
|
if (profile_state != ERROR_STATE) {
|
||||||
|
set_temp(0, 0, 0, 0);
|
||||||
|
profile_state = ERROR_STATE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void OvenCtl::handle_start_state() {
|
||||||
|
check_max_duration();
|
||||||
|
if (temperature > profile.data[PI_TS_MIN]) {
|
||||||
|
Ts_time_start = time;
|
||||||
|
set_preheat_state();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void OvenCtl::handle_preheat_state() {
|
||||||
|
check_Ts_duration_max();
|
||||||
|
check_max_duration();
|
||||||
|
if (temperature > profile.data[PI_TS_MAX]) {
|
||||||
|
check_Ts_duration_min();
|
||||||
|
set_ramp_up_state();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void OvenCtl::handle_ramp_up_state() {
|
||||||
|
check_max_duration();
|
||||||
|
if (temperature > profile.data[PI_TL]) {
|
||||||
|
Tl_time_start = time;
|
||||||
|
set_tal_first_state();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void OvenCtl::handle_tal_first_state() {
|
||||||
|
check_max_duration();
|
||||||
|
check_Tl_duration_max();
|
||||||
|
if (temperature > profile.data[PI_TP_MIN]) {
|
||||||
|
Tp_time_start = time;
|
||||||
|
set_peak_state();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void OvenCtl::handle_peak_state() {
|
||||||
|
check_Tl_duration_max();
|
||||||
|
check_Tp_duration_max();
|
||||||
|
if (time - Tp_time_start > profile.data[PI_TP_DURATION_MAX]) {
|
||||||
|
check_Tp_duration_min();
|
||||||
|
set_tal_second_state();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void OvenCtl::handle_tal_second_state() {
|
||||||
|
check_Tl_duration_max();
|
||||||
|
if (temperature < profile.data[PI_TL]) {
|
||||||
|
check_Tl_duration_min();
|
||||||
|
set_ramp_down_state();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void OvenCtl::handle_ramp_down_state() {
|
||||||
|
if (temperature < profile.data[PI_TS_MIN]) {
|
||||||
|
set_end_state();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void OvenCtl::handle_end_state() {
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void OvenCtl::handle_error_state() {
|
||||||
|
}
|
||||||
|
|
||||||
|
void OvenCtl::handle_profile_states() {
|
||||||
|
// switch (profile_state) {
|
||||||
|
// case START_STATE:
|
||||||
|
// handle_start_state();
|
||||||
|
// break;
|
||||||
|
// case PREHEAT_STATE:
|
||||||
|
// handle_preheat_state();
|
||||||
|
// break;
|
||||||
|
// case RAMP_UP_STATE:
|
||||||
|
// handle_ramp_up_state();
|
||||||
|
// break;
|
||||||
|
// case TAL_FIRST_STATE:
|
||||||
|
// handle_tal_first_state();
|
||||||
|
// break;
|
||||||
|
// case PEAK_STATE:
|
||||||
|
// handle_peak_state();
|
||||||
|
// break;
|
||||||
|
// case TAL_SECOND_STATE:
|
||||||
|
// Tl_time_end = time;
|
||||||
|
// handle_tal_second_state();
|
||||||
|
// break;
|
||||||
|
// case RAMP_DOWN_STATE:
|
||||||
|
// handle_ramp_down_state();
|
||||||
|
// break;
|
||||||
|
// case END_STATE:
|
||||||
|
// handle_end_state();
|
||||||
|
// break;
|
||||||
|
// case ERROR_STATE:
|
||||||
|
// handle_error_state();
|
||||||
|
// break;
|
||||||
|
// default:
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue