From 05a31ff2da3366d0a69b8c38b0f2e7463db3ded4 Mon Sep 17 00:00:00 2001 From: Ted Hess Date: Thu, 4 Jan 2018 17:13:03 -0500 Subject: [PATCH] ultralcd: eliminate display flicker in pid_extruder --- Firmware/ultralcd.cpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 7213c8dbb..e4b540020 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -2223,15 +2223,18 @@ static void lcd_adjust_bed() void pid_extruder() { - lcd_implementation_clear(); - lcd.setCursor(1, 0); - lcd_printPGM(MSG_SET_TEMPERATURE); - pid_temp += int(encoderPosition); - if (pid_temp > HEATER_0_MAXTEMP) pid_temp = HEATER_0_MAXTEMP; - if (pid_temp < HEATER_0_MINTEMP) pid_temp = HEATER_0_MINTEMP; - encoderPosition = 0; - lcd.setCursor(1, 2); - lcd.print(ftostr3(pid_temp)); + if ((encoderPosition != 0) || (lcdDrawUpdate == 1)) { + lcd_implementation_clear(); + lcd.setCursor(1, 0); + lcd_printPGM(MSG_SET_TEMPERATURE); + pid_temp += int(encoderPosition); + if (pid_temp > HEATER_0_MAXTEMP) pid_temp = HEATER_0_MAXTEMP; + if (pid_temp < HEATER_0_MINTEMP) pid_temp = HEATER_0_MINTEMP; + encoderPosition = 0; + lcd.setCursor(1, 2); + lcd.print(ftostr3(pid_temp)); + lcdDrawUpdate = 1; + } if (lcd_clicked()) { lcd_commands_type = LCD_COMMAND_PID_EXTRUDER; lcd_return_to_status();