IDEX Support initial commit

This commit is contained in:
InsanityAutomation
2022-07-17 20:43:12 -04:00
parent 096c146f16
commit f96a4a53ef
2 changed files with 150 additions and 114 deletions
+135 -109
View File
@@ -54,15 +54,12 @@ namespace ExtUI
char NozzleTempStatus[3] = {0};
bool PrintMode = false; //Eco Mode default off
char PrinterStatusKey[2] = {0}; // PrinterStatusKey[1] value: 0 represents to keep temperature, 1 represents to heating , 2 stands for cooling , 3 stands for printing
// PrinterStatusKey[0] value: 0 reprensents 3D printer ready
unsigned char AxisPagenum = 0; //0 for 10mm, 1 for 1mm, 2 for 0.1mm
bool InforShowStatus = true;
bool TPShowStatus = false; // true for only opening time and percentage, false for closing time and percentage.
bool FanStatus = true;
bool AutohomeKey = false;
unsigned char AutoHomeIconNum;
int16_t userConfValidation = 0;
@@ -100,11 +97,6 @@ void onStartup()
rtscheck.RTS_SndData(StartSoundSet, SoundAddr);
delay_ms(400); // Delay to allow screen to configure
onStatusChanged(CUSTOM_MACHINE_NAME " Ready");
//Set Eco Mode
if (PrintMode)
rtscheck.RTS_SndData(3, FanKeyIcon + 1); // saving mode
else
rtscheck.RTS_SndData(2, FanKeyIcon + 1); // normal
rtscheck.RTS_SndData(100, FeedrateDisplay);
@@ -115,10 +107,13 @@ void onStartup()
rtscheck.RTS_SndData(0, NozzlePreheat);
rtscheck.RTS_SndData(0, BedPreheat);
rtscheck.RTS_SndData(getActualTemp_celsius(H0), NozzleTemp);
#if HAS_MULTI_HOTEND
rtscheck.RTS_SndData(getActualTemp_celsius(H1), e2Temp);
#endif
rtscheck.RTS_SndData(getActualTemp_celsius(BED), Bedtemp);
/***************transmit Fan speed to screen*****************/
rtscheck.RTS_SndData(2, FanKeyIcon); //turn 0ff fan icon
FanStatus = true;
rtscheck.RTS_SndData(getActualFan_percent(), FanKeyIcon);
/***************transmit Printer information to screen*****************/
for (int j = 0; j < 20; j++) //clean filename
@@ -182,6 +177,12 @@ void onIdle()
rtscheck.RTS_SndData(getActualTemp_celsius(BED), Bedtemp);
rtscheck.RTS_SndData(getTargetTemp_celsius(H0), NozzlePreheat);
rtscheck.RTS_SndData(getTargetTemp_celsius(BED), BedPreheat);
#if HAS_MULTI_HOTEND
rtscheck.RTS_SndData(getActualTemp_celsius(H1), e2Temp);
rtscheck.RTS_SndData(getTargetTemp_celsius(H1), e2Preheat);
rtscheck.RTS_SndData(((uint8_t)getActiveTool() + 1), ActiveToolVP);
#endif
if(awaitingUserConfirm() && (lastPauseMsgState!=ExtUI::pauseModeStatus || userConfValidation > 99))
{
@@ -242,7 +243,6 @@ void onIdle()
if(isPositionKnown()) {
InforShowStatus = true;
SERIAL_ECHOLNPGM_P(PSTR("==waitway 1=="));
rtscheck.RTS_SndData(4 + CEIconGrap, IconPrintstatus); // 4 for Pause
rtscheck.RTS_SndData(ExchangePageBase + 54, ExchangepageAddr);
waitway = 0;
}
@@ -350,7 +350,7 @@ void onIdle()
if (isPrinting())
{
rtscheck.RTS_SndData(0 + CEIconGrap, IconPrintstatus);
rtscheck.RTS_SndData(getActualFan_percent(), FanKeyIcon);
rtscheck.RTS_SndData(getProgress_seconds_elapsed() / 3600, Timehour);
rtscheck.RTS_SndData((getProgress_seconds_elapsed() % 3600) / 60, Timemin);
if (getProgress_percent() > 0)
@@ -374,73 +374,60 @@ void onIdle()
}
rtscheck.RTS_SndData((unsigned int)getProgress_percent(), Percentage);
}
else { // Not printing settings
rtscheck.RTS_SndData(map(constrain(Settings.display_volume, 0, 255), 0, 255, 0, 100), VolumeDisplay);
rtscheck.RTS_SndData(Settings.screen_brightness, DisplayBrightness);
rtscheck.RTS_SndData(Settings.standby_screen_brightness, DisplayStandbyBrightness);
rtscheck.RTS_SndData(Settings.standby_time_seconds, DisplayStandbySeconds);
if(Settings.display_standby)
rtscheck.RTS_SndData(3, DisplayStandbyEnableIndicator);
else
rtscheck.RTS_SndData(2, DisplayStandbyEnableIndicator);
rtscheck.RTS_SndData(map(constrain(Settings.display_volume, 0, 255), 0, 255, 0, 100), VolumeDisplay);
rtscheck.RTS_SndData(Settings.screen_brightness, DisplayBrightness);
rtscheck.RTS_SndData(Settings.standby_screen_brightness, DisplayStandbyBrightness);
rtscheck.RTS_SndData(Settings.standby_time_seconds, DisplayStandbySeconds);
if(Settings.display_standby)
rtscheck.RTS_SndData(3, DisplayStandbyEnableIndicator);
else
rtscheck.RTS_SndData(2, DisplayStandbyEnableIndicator);
rtscheck.RTS_SndData((unsigned int)(getAxisSteps_per_mm(X) * 10), StepMM_X);
rtscheck.RTS_SndData((unsigned int)(getAxisSteps_per_mm(Y) * 10), StepMM_Y);
rtscheck.RTS_SndData((unsigned int)(getAxisSteps_per_mm(Z) * 10), StepMM_Z);
rtscheck.RTS_SndData((unsigned int)(getAxisSteps_per_mm(E0) * 10), StepMM_E);
if(getTargetTemp_celsius(BED)==0 && getTargetTemp_celsius(H0)==0)
{
rtscheck.RTS_SndData(0 + CEIconGrap, IconPrintstatus);
rtscheck.RTS_SndData(((unsigned int)getAxisMaxAcceleration_mm_s2(X)/100), Accel_X);
rtscheck.RTS_SndData(((unsigned int)getAxisMaxAcceleration_mm_s2(Y)/100), Accel_Y);
rtscheck.RTS_SndData(((unsigned int)getAxisMaxAcceleration_mm_s2(Z)/10), Accel_Z);
rtscheck.RTS_SndData(((unsigned int)getAxisMaxAcceleration_mm_s2(E0)), Accel_E);
rtscheck.RTS_SndData(((unsigned int)getAxisMaxFeedrate_mm_s(X)), Feed_X);
rtscheck.RTS_SndData(((unsigned int)getAxisMaxFeedrate_mm_s(Y)), Feed_Y);
rtscheck.RTS_SndData(((unsigned int)getAxisMaxFeedrate_mm_s(Z)), Feed_Z);
rtscheck.RTS_SndData(((unsigned int)getAxisMaxFeedrate_mm_s(E0)), Feed_E);
rtscheck.RTS_SndData(((unsigned int)getAxisMaxJerk_mm_s(X)*100), Jerk_X);
rtscheck.RTS_SndData(((unsigned int)getAxisMaxJerk_mm_s(Y)*100), Jerk_Y);
rtscheck.RTS_SndData(((unsigned int)getAxisMaxJerk_mm_s(Z)*100), Jerk_Z);
rtscheck.RTS_SndData(((unsigned int)getAxisMaxJerk_mm_s(E0)*100), Jerk_E);
#if HAS_BED_PROBE
rtscheck.RTS_SndData(getProbeOffset_mm(X) * 100, ProbeOffset_X);
rtscheck.RTS_SndData(getProbeOffset_mm(Y) * 100, ProbeOffset_Y);
#endif
#if HAS_PID_HEATING
rtscheck.RTS_SndData(pid_hotendAutoTemp, HotendPID_AutoTmp);
rtscheck.RTS_SndData(pid_bedAutoTemp, BedPID_AutoTmp);
rtscheck.RTS_SndData((unsigned int)(getPIDValues_Kp(E0) * 10), HotendPID_P);
rtscheck.RTS_SndData((unsigned int)(getPIDValues_Ki(E0) * 10), HotendPID_I);
rtscheck.RTS_SndData((unsigned int)(getPIDValues_Kd(E0) * 10), HotendPID_D);
#if ENABLED(PIDTEMPBED)
rtscheck.RTS_SndData((unsigned int)(getBedPIDValues_Kp() * 10), BedPID_P);
rtscheck.RTS_SndData((unsigned int)(getBedPIDValues_Ki() * 10), BedPID_I);
rtscheck.RTS_SndData((unsigned int)(getBedPIDValues_Kd() * 10), BedPID_D);
#endif
#endif
}
else if (getActualTemp_celsius(BED) < (getTargetTemp_celsius(BED) - THERMAL_PROTECTION_BED_HYSTERESIS ) || (getActualTemp_celsius(H0) < (getTargetTemp_celsius(H0) - THERMAL_PROTECTION_HYSTERESIS)))
{
rtscheck.RTS_SndData(1 + CEIconGrap, IconPrintstatus); // Heating Status
PrinterStatusKey[1] = (PrinterStatusKey[1] == 0 ? 1 : PrinterStatusKey[1]);
}
else if (getActualTemp_celsius(BED) > (getTargetTemp_celsius(BED) + THERMAL_PROTECTION_BED_HYSTERESIS) || (getActualTemp_celsius(H0) > (getTargetTemp_celsius(H0) + THERMAL_PROTECTION_HYSTERESIS)))
{
rtscheck.RTS_SndData(8 + CEIconGrap, IconPrintstatus); // Cooling Status
PrinterStatusKey[1] = (PrinterStatusKey[1] == 0 ? 2 : PrinterStatusKey[1]);
}
else
rtscheck.RTS_SndData(0 + CEIconGrap, IconPrintstatus);
rtscheck.RTS_SndData(getZOffset_mm() * 100, ProbeOffset_Z);
rtscheck.RTS_SndData((unsigned int)(getFlow_percent(E0)), Flowrate);
rtscheck.RTS_SndData((unsigned int)(getAxisSteps_per_mm(X) * 10), StepMM_X);
rtscheck.RTS_SndData((unsigned int)(getAxisSteps_per_mm(Y) * 10), StepMM_Y);
rtscheck.RTS_SndData((unsigned int)(getAxisSteps_per_mm(Z) * 10), StepMM_Z);
rtscheck.RTS_SndData((unsigned int)(getAxisSteps_per_mm(E0) * 10), StepMM_E);
rtscheck.RTS_SndData(((unsigned int)getAxisMaxAcceleration_mm_s2(X)/100), Accel_X);
rtscheck.RTS_SndData(((unsigned int)getAxisMaxAcceleration_mm_s2(Y)/100), Accel_Y);
rtscheck.RTS_SndData(((unsigned int)getAxisMaxAcceleration_mm_s2(Z)/10), Accel_Z);
rtscheck.RTS_SndData(((unsigned int)getAxisMaxAcceleration_mm_s2(E0)), Accel_E);
rtscheck.RTS_SndData(((unsigned int)getAxisMaxFeedrate_mm_s(X)), Feed_X);
rtscheck.RTS_SndData(((unsigned int)getAxisMaxFeedrate_mm_s(Y)), Feed_Y);
rtscheck.RTS_SndData(((unsigned int)getAxisMaxFeedrate_mm_s(Z)), Feed_Z);
rtscheck.RTS_SndData(((unsigned int)getAxisMaxFeedrate_mm_s(E0)), Feed_E);
rtscheck.RTS_SndData(((unsigned int)getAxisMaxJerk_mm_s(X)*100), Jerk_X);
rtscheck.RTS_SndData(((unsigned int)getAxisMaxJerk_mm_s(Y)*100), Jerk_Y);
rtscheck.RTS_SndData(((unsigned int)getAxisMaxJerk_mm_s(Z)*100), Jerk_Z);
rtscheck.RTS_SndData(((unsigned int)getAxisMaxJerk_mm_s(E0)*100), Jerk_E);
#if HAS_BED_PROBE
rtscheck.RTS_SndData(getProbeOffset_mm(X) * 100, ProbeOffset_X);
rtscheck.RTS_SndData(getProbeOffset_mm(Y) * 100, ProbeOffset_Y);
#endif
#if HAS_PID_HEATING
rtscheck.RTS_SndData(pid_hotendAutoTemp, HotendPID_AutoTmp);
rtscheck.RTS_SndData(pid_bedAutoTemp, BedPID_AutoTmp);
rtscheck.RTS_SndData((unsigned int)(getPIDValues_Kp(E0) * 10), HotendPID_P);
rtscheck.RTS_SndData((unsigned int)(getPIDValues_Ki(E0) * 10), HotendPID_I);
rtscheck.RTS_SndData((unsigned int)(getPIDValues_Kd(E0) * 10), HotendPID_D);
#if ENABLED(PIDTEMPBED)
rtscheck.RTS_SndData((unsigned int)(getBedPIDValues_Kp() * 10), BedPID_P);
rtscheck.RTS_SndData((unsigned int)(getBedPIDValues_Ki() * 10), BedPID_I);
rtscheck.RTS_SndData((unsigned int)(getBedPIDValues_Kd() * 10), BedPID_D);
#endif
#endif
if (NozzleTempStatus[0] || NozzleTempStatus[2]) //statuse of loadfilement and unloadfinement when temperature is less than
{
@@ -824,6 +811,13 @@ void RTSSHOW::RTS_HandleData()
case BedPID_P :
case BedPID_I :
case BedPID_D :
case T2Offset_X:
case T2Offset_Y:
case T2Offset_Z:
case T2StepMM_E:
case T2PID_P:
case T2PID_I:
case T2PID_D:
case Accel_X:
case Accel_Y:
case Accel_Z:
@@ -908,7 +902,7 @@ void RTSSHOW::RTS_HandleData()
InforShowStatus = true;
TPShowStatus = false;
SERIAL_ECHOLNPGM_P(PSTR("Handle Data PrintFile 3 Setting Screen "));
if (FanStatus)
if (getTargetFan_percent()==0)
RTS_SndData(ExchangePageBase + 58, ExchangepageAddr); //exchange to 58 page, the fans off
else
RTS_SndData(ExchangePageBase + 57, ExchangepageAddr); //exchange to 57 page, the fans on
@@ -921,7 +915,6 @@ void RTSSHOW::RTS_HandleData()
if (recdat.data[0] == 1)
{
InforShowStatus = false;
FanStatus ? RTS_SndData(2, FanKeyIcon) : RTS_SndData(3, FanKeyIcon);
}
else if (recdat.data[0] == 2)
{
@@ -942,32 +935,16 @@ void RTSSHOW::RTS_HandleData()
}
else if (recdat.data[0] == 3)
{
if (FanStatus) //turn on the fan
if (getTargetFan_percent()!=0) //turn on the fan
{
RTS_SndData(3, FanKeyIcon);
setTargetFan_percent(100, FAN0);
FanStatus = false;
}
else //turn off the fan
{
RTS_SndData(2, FanKeyIcon);
setTargetFan_percent(0, FAN0);
FanStatus = true;
}
}
else if (recdat.data[0] == 4)
{
if (PrintMode) // normal printing mode
{
RTS_SndData(2, FanKeyIcon + 1);
PrintMode = false;
}
else // power saving mode
{
RTS_SndData(3, FanKeyIcon + 1);
PrintMode = true;
}
}
break;
case Feedrate:
@@ -1007,8 +984,6 @@ void RTSSHOW::RTS_HandleData()
PrinterStatusKey[1] = 0;
InforShowStatus = true;
RTS_SndData(0 + CEIconGrap, IconPrintstatus);
//PrinterStatusKey[1] = 3;
RTS_SndData(ExchangePageBase + 53, ExchangepageAddr);
}
if (recdat.addr == Resumeprint && recdat.data[0] == 2) // warming
@@ -1065,7 +1040,7 @@ void RTSSHOW::RTS_HandleData()
}
else if (recdat.data[0] == 1)
{
if(FanStatus)
if(getTargetFan_percent()==0)
RTS_SndData(ExchangePageBase + 60, ExchangepageAddr); //exchange to 60 page, the fans off
else
RTS_SndData(ExchangePageBase + 59, ExchangepageAddr); //exchange to 59 page, the fans on
@@ -1076,16 +1051,14 @@ void RTSSHOW::RTS_HandleData()
}
else if (recdat.data[0] == 3)
{
if (FanStatus) //turn on the fan
if (getTargetFan_percent()==0) //turn on the fan
{
setTargetFan_percent(100, FAN0);
FanStatus = false;
RTS_SndData(ExchangePageBase + 57, ExchangepageAddr); //exchange to 57 page, the fans on
}
else //turn off the fan
{
setTargetFan_percent(0, FAN0);
FanStatus = true;
RTS_SndData(ExchangePageBase + 58, ExchangepageAddr); //exchange to 58 page, the fans on
}
}
@@ -1112,7 +1085,6 @@ void RTSSHOW::RTS_HandleData()
for (uint8_t i = 0; i < FAN_COUNT; i++)
setTargetFan_percent(0, (fan_t)i);
#endif
FanStatus = false;
setTargetTemp_celsius(0.0, H0);
setTargetTemp_celsius(0.0, BED);
@@ -1121,7 +1093,6 @@ void RTSSHOW::RTS_HandleData()
RTS_SndData(0, BedPreheat);
delay_ms(1);
RTS_SndData(8 + CEIconGrap, IconPrintstatus);
RTS_SndData(ExchangePageBase + 57, ExchangepageAddr);
PrinterStatusKey[1] = 2;
}
@@ -1133,7 +1104,7 @@ void RTSSHOW::RTS_HandleData()
{
if (recdat.data[0] == 0)
{
if (FanStatus)
if (getTargetFan_percent()==0)
RTS_SndData(ExchangePageBase + 58, ExchangepageAddr); //exchange to 58 page, the fans off
else
RTS_SndData(ExchangePageBase + 57, ExchangepageAddr); //exchange to 57 page, the fans on
@@ -1212,8 +1183,32 @@ void RTSSHOW::RTS_HandleData()
}
else if (recdat.addr == StepMM_E) {
setAxisSteps_per_mm(tmp_float_handling*10, E0);
setAxisSteps_per_mm(tmp_float_handling*10, E1);
#if DISABLED(DUAL_X_CARRIAGE)
setAxisSteps_per_mm(tmp_float_handling*10, E1);
#endif
}
#if ENABLED(DUAL_X_CARRIAGE)
else if (recdat.addr == T2StepMM_E)
{
setAxisSteps_per_mm(tmp_float_handling*10, E1);
}
else if (recdat.addr == T2Offset_X)
{
setNozzleOffset_mm(tmp_float_handling*10, X, E1);
}
else if (recdat.addr == T2Offset_Y)
{
setNozzleOffset_mm(tmp_float_handling*10, Y, E1);
}
else if (recdat.addr == T2Offset_Z)
{
setNozzleOffset_mm(tmp_float_handling*10, Z, E1);
}
else if (recdat.addr == T2PID_P)
{
setNozzleOffset_mm(tmp_float_handling*10, Z, E1);
}
#endif
#if HAS_BED_PROBE
else if (recdat.addr == ProbeOffset_X) {
setProbeOffset_mm(tmp_float_handling, X);
@@ -1347,6 +1342,10 @@ void RTSSHOW::RTS_HandleData()
RTS_SndData(10 * ChangeMaterialbuf[1], FilementUnit2);
RTS_SndData(getActualTemp_celsius(H0), NozzleTemp);
RTS_SndData(getTargetTemp_celsius(H0), NozzlePreheat);
#if HAS_MULTI_HOTEND
rtscheck.RTS_SndData(getActualTemp_celsius(H1), e2Temp);
rtscheck.RTS_SndData(getTargetTemp_celsius(H1), e2Preheat);
#endif
delay_ms(2);
RTS_SndData(ExchangePageBase + 65, ExchangepageAddr);
}
@@ -1593,6 +1592,34 @@ void RTSSHOW::RTS_HandleData()
SetTouchScreenConfiguration();
break;
}
case 23: // Set IDEX Autopark
{
injectCommands_P(PSTR("M605S1\nG28X\nG1X0"));
break;
}
case 24: // Set IDEX Duplication
{
injectCommands_P(PSTR("M605S1\nT0\nG28\nM605S2\nG28X\nG1X0"));
break;
}
case 25: // Set IDEX Mirrored Duplication
{
injectCommands_P(PSTR("M605S1\nT0\nG28\nM605S2\nG28X\nG1X0\nM605S3"));
break;
}
case 26: // Set IDEX Full Control
{
injectCommands_P(PSTR("M605S0\nG28X"));
break;
}
case 27: // Change Tool
{
if(getActiveTool()==E0)
setActiveTool(E1, !isAxisPositionKnown(X));
else
setActiveTool(E0, !isAxisPositionKnown(X));
break;
}
default:
{
SERIAL_ECHOLNPGM("Unsupported Option Selected", recdat.data[0]);
@@ -1704,6 +1731,10 @@ void RTSSHOW::RTS_HandleData()
RTS_SndData(getActualTemp_celsius(H0), NozzleTemp);
RTS_SndData(getTargetTemp_celsius(H0), NozzlePreheat);
#if HAS_MULTI_HOTEND
rtscheck.RTS_SndData(getActualTemp_celsius(H1), e2Temp);
rtscheck.RTS_SndData(getTargetTemp_celsius(H1), e2Preheat);
#endif
delay_ms(5);
RTS_SndData(ExchangePageBase + 68, ExchangepageAddr);
break;
@@ -1924,7 +1955,6 @@ void RTSSHOW::RTS_HandleData()
RTS_SndData(filenavigator.getIndexName(fileIndex + recordcount), Printfilename);
delay_ms(2);
RTS_SndData(1 + CEIconGrap, IconPrintstatus); // 1 for Heating
delay_ms(2);
RTS_SndData(ExchangePageBase + 53, ExchangepageAddr);
@@ -2204,7 +2234,6 @@ void onMediaError()
rtscheck.RTS_SndData(10, FilenameIcon + j);
rtscheck.RTS_SndData(10, FilenameIcon1 + j);
}
rtscheck.RTS_SndData(18, IconPrintstatus);
return;
SERIAL_ECHOLNPGM_P(PSTR("***Initing card fails***"));
}
@@ -2230,7 +2259,6 @@ void onMediaRemoved()
rtscheck.RTS_SndData(10, FilenameIcon + j);
rtscheck.RTS_SndData(10, FilenameIcon1 + j);
}
rtscheck.RTS_SndData(18, IconPrintstatus);
return;
SERIAL_ECHOLN("***Card Removed***");
}
@@ -2247,7 +2275,6 @@ void onPrintTimerStarted()
return;
PrinterStatusKey[1] = 3;
InforShowStatus = true;
rtscheck.RTS_SndData(4 + CEIconGrap, IconPrintstatus);
delay_ms(1);
rtscheck.RTS_SndData(ExchangePageBase + 53, ExchangepageAddr);
}
@@ -2268,7 +2295,6 @@ void onPrintTimerStopped()
for (uint8_t i = 0; i < FAN_COUNT; i++)
setTargetFan_percent(FanOff, (fan_t)i);
#endif
FanStatus = true;
PrinterStatusKey[0] = 0;
InforShowStatus = true;
@@ -2326,7 +2352,7 @@ void onUserConfirmRequired(const char *const msg)
strcat(newMsg, "Continue");
else
strcat(newMsg, "Disable ");
strcat(newMsg, " No to Purge");
onStatusChanged(newMsg);
break;
@@ -2342,7 +2368,7 @@ void onUserConfirmRequired(const char *const msg)
strcat(newMsg, "Continue");
else
strcat(newMsg, "Disable ");
strcat(newMsg, " No to Purge");
onStatusChanged(newMsg);
break;
+15 -5
View File
@@ -92,6 +92,13 @@ namespace ExtUI {
#define ProbeOffset_Y 0x123A
#define ProbeOffset_Z 0x1026
#define T2Offset_X 0x1090
#define T2Offset_Y 0x1092
#define T2Offset_Z 0x1094
#define T2StepMM_E 0x1096
#define ActiveToolVP 0x1014
#define HotendPID_AutoTmp 0x1252
#define BedPID_AutoTmp 0x1254
@@ -121,11 +128,14 @@ namespace ExtUI {
#define HeatPercentIcon 0x1024
#define NzBdSet 0x1032
#define NozzlePreheat 0x1034
#define NozzleTemp 0x1036
#define BedPreheat 0x103A
#define Bedtemp 0x103C
#define NzBdSet 0x1032 // cooldown Hotend and Bed
#define NozzlePreheat 0x1034 // setpoint
#define NozzleTemp 0x1036 // Actual
#define BedPreheat 0x103A // Setpoint
#define Bedtemp 0x103C // Actual
#define e2Temp 0x104E
#define e2Preheat 0x1050
#define AutoZeroIcon 0x1042
#define AutoLevelIcon 0x1045