main/automation.c

changeset 102
96e30a3a3980
parent 96
6a3fec0c3f88
child 104
03c38ad63e8c
equal deleted inserted replaced
101:1bc6e9263ada 102:96e30a3a3980
4 */ 4 */
5 5
6 #include "config.h" 6 #include "config.h"
7 7
8 int BoilPower = 100; ///< Boil power 0..100% 8 int BoilPower = 100; ///< Boil power 0..100%
9 int RampPower = 100; ///< Boil ramp power 0..100%
9 int LastMashStep = 0; ///< Last valid mash step 10 int LastMashStep = 0; ///< Last valid mash step
10 char temp_buf[64]; ///< Temporary buffer 11 char temp_buf[64]; ///< Temporary buffer
11 char logline[128]; ///< Log line buffer 12 char logline[128]; ///< Log line buffer
12 char strftime_buf[64]; ///< Time buffer 13 char strftime_buf[64]; ///< Time buffer
13 bool loop; ///< Loop flag 14 bool loop; ///< Loop flag
267 } 268 }
268 269
269 runtime.StageResume = Main_Screen; 270 runtime.StageResume = Main_Screen;
270 updateRuntime = true; 271 updateRuntime = true;
271 TempReached = false; 272 TempReached = false;
273 RampPower = equipment.RampPower;
272 274
273 TopMessage((char *)"Naar koken"); 275 TopMessage((char *)"Naar koken");
274 MLT_info(71, 26, false); 276 MLT_info(71, 26, false);
275 Buttons_Add( 5, 30, 60, 40, (char *)"+sp", 0); 277 Buttons_Add( 5, 30, 60, 40, (char *)"+sp", 0);
276 Buttons_Add(255, 30, 60, 40, (char *)"-sp", 1); 278 Buttons_Add(255, 30, 60, 40, (char *)"-sp", 1);
279 Buttons_Add( 3, 110, 60, 40, (char *)"+%", 2);
280 Buttons_Add(257, 110, 60, 40, (char *)"-%", 3);
277 Buttons_Show(); 281 Buttons_Show();
278 log_msg(TAG, "Mash done, going to boil."); 282 log_msg(TAG, "Mash done, going to boil.");
279 Sub_Screen = 0; 283 Sub_Screen = 0;
280 break; 284 break;
281 285
298 SoundPlay(SOUND_TempReached); 302 SoundPlay(SOUND_TempReached);
299 BoilPower = equipment.BoilPower; 303 BoilPower = equipment.BoilPower;
300 updateRuntime = true; 304 updateRuntime = true;
301 TopMessage((char *)"Koken"); 305 TopMessage((char *)"Koken");
302 MLT_info(71, 26, false); 306 MLT_info(71, 26, false);
303 Buttons_Add( 3, 30, 60, 40, (char *)"+sp", 0); 307 Buttons_Add( 3, 30, 60, 40, (char *)"+sp", 0);
304 Buttons_Add(257, 30, 60, 40, (char *)"-sp", 1); 308 Buttons_Add(257, 30, 60, 40, (char *)"-sp", 1);
305 Buttons_Add( 3, 190, 60, 40, (char *)"+1m", 2); 309 Buttons_Add( 3, 110, 60, 40, (char *)"+%", 2);
306 Buttons_Add(257, 190, 60, 40, (char *)"-1m", 3); 310 Buttons_Add(257, 110, 60, 40, (char *)"-%", 3);
311 Buttons_Add( 3, 190, 60, 40, (char *)"+1m", 4);
312 Buttons_Add(257, 190, 60, 40, (char *)"-1m", 5);
307 Buttons_Show(); 313 Buttons_Show();
308 log_msg(TAG, "Boil temperature reached, boil %d minutes", (TimeLeft / 60) -1); 314 log_msg(TAG, "Boil temperature reached, boil %d minutes", (TimeLeft / 60) -1);
309 log_annotation(ANNOTATION_STAGE, (char *)"Koken"); 315 log_annotation(ANNOTATION_STAGE, (char *)"Koken");
310 Sub_Screen = 0; 316 Sub_Screen = 0;
311 break; 317 break;
1001 HLT_info(71, 170, true, true); 1007 HLT_info(71, 170, true, true);
1002 } 1008 }
1003 break; 1009 break;
1004 1010
1005 case MAIN_AUTO_TOBOIL: 1011 case MAIN_AUTO_TOBOIL:
1006 Output = 255; 1012 Output = (int)((RampPower * 255.0) / 100.0);
1007 /* 1013 /*
1008 * Go to the boil temperature and wait until it is steady. 1014 * Go to the boil temperature and wait until it is steady.
1009 */ 1015 */
1010 if (xSemaphoreTake(xSemaphoreDriver, 10) == pdTRUE) { 1016 if (xSemaphoreTake(xSemaphoreDriver, 10) == pdTRUE) {
1011 if (driver_state->mlt_pv < stageTemp) { 1017 if (driver_state->mlt_pv < stageTemp) {
1029 1035
1030 case 1: if (stageTemp > 80) { 1036 case 1: if (stageTemp > 80) {
1031 change_sp(false); 1037 change_sp(false);
1032 } 1038 }
1033 break; 1039 break;
1040
1041 case 2: if (RampPower < 100)
1042 RampPower++;
1043 log_msg(TAG, "Increase ramppower to %d%%", RampPower);
1044 break;
1045
1046 case 3: if (RampPower > 0)
1047 RampPower--;
1048 log_msg(TAG, "Decrease ramppower to %d%%", RampPower);
1049 break;
1034 1050
1035 default: break; 1051 default: break;
1036 } 1052 }
1037 if (Resume) 1053 if (Resume)
1038 Resume = false; 1054 Resume = false;
1061 } 1077 }
1062 // Flameout 1078 // Flameout
1063 Output = 0; 1079 Output = 0;
1064 } else if (driver_state->mlt_pv >= stageTemp) { 1080 } else if (driver_state->mlt_pv >= stageTemp) {
1065 Output = (int)((BoilPower * 255.0) / 100.0); 1081 Output = (int)((BoilPower * 255.0) / 100.0);
1066 if (Buttons[4].x == -1) {
1067 Buttons_Add( 3,110, 60, 40, (char *)"+%", 4);
1068 Buttons_Add(257,110, 60, 40, (char *)"-%", 5);
1069 Buttons_Show();
1070 }
1071 } else { 1082 } else {
1072 Output = 255; 1083 Output = (int)((RampPower * 255.0) / 100.0);;
1073 if (Buttons[4].x != -1) {
1074 Buttons[4].x = Buttons[5].x = -1;
1075 Buttons_Show();
1076 TFT_fillRect( 3,110, 60, 40, TFT_BLACK);
1077 TFT_fillRect(257,110, 60, 40, TFT_BLACK);
1078 }
1079 } 1084 }
1080 1085
1081 MLT_info(71, 26, true); 1086 MLT_info(71, 26, true);
1082 TimerShow(TimeLeft, 65, 190); 1087 TimerShow(TimeLeft, 65, 190);
1083 1088
1090 case 1: if (stageTemp > 80) { 1095 case 1: if (stageTemp > 80) {
1091 change_sp(false); 1096 change_sp(false);
1092 } 1097 }
1093 break; 1098 break;
1094 1099
1095 case 2: change_tl(21600); 1100 case 4: change_tl(21600);
1096 break; 1101 break;
1097 1102
1098 case 3: change_tl(0); 1103 case 5: change_tl(0);
1099 break; 1104 break;
1100 1105
1101 case 4: if (BoilPower < 100) 1106 case 2: if (driver_state->mlt_pv >= stageTemp) {
1102 BoilPower++; 1107 if (BoilPower < 100)
1103 log_msg(TAG, "Increase boilpower to %d%%", BoilPower); 1108 BoilPower++;
1109 log_msg(TAG, "Increase boilpower to %d%%", BoilPower);
1110 } else {
1111 if (RampPower < 100)
1112 RampPower++;
1113 log_msg(TAG, "Increase ramppower to %d%%", RampPower);
1114 }
1104 break; 1115 break;
1105 1116
1106 case 5: if (BoilPower > 0) 1117 case 3: if (driver_state->mlt_pv >= stageTemp) {
1107 BoilPower--; 1118 if (BoilPower > 0)
1108 log_msg(TAG, "Decrease boilpower to %d%%", BoilPower); 1119 BoilPower--;
1120 log_msg(TAG, "Decrease boilpower to %d%%", BoilPower);
1121 } else {
1122 if (RampPower > 0)
1123 RampPower--;
1124 log_msg(TAG, "Decrease ramppower to %d%%", RampPower);
1125 }
1109 break; 1126 break;
1110 1127
1111 default: break; 1128 default: break;
1112 } 1129 }
1113 1130

mercurial