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) { |
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 |