Merge branch 'Development' into marlin_configurator
Latest upstream changes
This commit is contained in:
commit
8d5839151b
13 changed files with 876 additions and 921 deletions
|
@ -118,7 +118,10 @@ Here are some standard links for getting your machine calibrated:
|
||||||
// 1010 is Pt1000 with 1k pullup (non standard)
|
// 1010 is Pt1000 with 1k pullup (non standard)
|
||||||
// 147 is Pt100 with 4k7 pullup
|
// 147 is Pt100 with 4k7 pullup
|
||||||
// 110 is Pt100 with 1k pullup (non standard)
|
// 110 is Pt100 with 1k pullup (non standard)
|
||||||
// 999 is a Dummy Table. It will ALWAYS read 25C.. Use it for Testing or Development purposes. NEVER for production machine.
|
// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below.
|
||||||
|
// Use it for Testing or Development purposes. NEVER for production machine.
|
||||||
|
// #define DUMMY_THERMISTOR_998_VALUE 25
|
||||||
|
// #define DUMMY_THERMISTOR_999_VALUE 100
|
||||||
|
|
||||||
#define TEMP_SENSOR_0 -1
|
#define TEMP_SENSOR_0 -1
|
||||||
#define TEMP_SENSOR_1 -1
|
#define TEMP_SENSOR_1 -1
|
||||||
|
@ -582,6 +585,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||||
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
||||||
|
|
||||||
|
// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
|
||||||
|
// http://reprap.org/wiki/PanelOne
|
||||||
|
//#define PANEL_ONE
|
||||||
|
|
||||||
// The MaKr3d Makr-Panel with graphic controller and SD support
|
// The MaKr3d Makr-Panel with graphic controller and SD support
|
||||||
// http://reprap.org/wiki/MaKr3d_MaKrPanel
|
// http://reprap.org/wiki/MaKr3d_MaKrPanel
|
||||||
//#define MAKRPANEL
|
//#define MAKRPANEL
|
||||||
|
@ -640,6 +647,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined (PANEL_ONE)
|
||||||
|
#define SDSUPPORT
|
||||||
|
#define ULTIMAKERCONTROLLER
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
||||||
#define DOGLCD
|
#define DOGLCD
|
||||||
|
|
|
@ -1720,6 +1720,7 @@ void process_commands()
|
||||||
|
|
||||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||||
case 29: // G29 Detailed Z-Probe, probes the bed at 3 or more points.
|
case 29: // G29 Detailed Z-Probe, probes the bed at 3 or more points.
|
||||||
|
// Override probing area by providing [F]ront [B]ack [L]eft [R]ight Grid[P]oints values
|
||||||
{
|
{
|
||||||
#if Z_MIN_PIN == -1
|
#if Z_MIN_PIN == -1
|
||||||
#error "You must have a Z_MIN endstop in order to enable Auto Bed Leveling feature!!! Z_MIN_PIN must point to a valid hardware pin."
|
#error "You must have a Z_MIN endstop in order to enable Auto Bed Leveling feature!!! Z_MIN_PIN must point to a valid hardware pin."
|
||||||
|
@ -1733,6 +1734,16 @@ void process_commands()
|
||||||
SERIAL_ECHOLNPGM(MSG_POSITION_UNKNOWN);
|
SERIAL_ECHOLNPGM(MSG_POSITION_UNKNOWN);
|
||||||
break; // abort G29, since we don't know where we are
|
break; // abort G29, since we don't know where we are
|
||||||
}
|
}
|
||||||
|
int left_probe_bed_position=LEFT_PROBE_BED_POSITION;
|
||||||
|
int right_probe_bed_position=RIGHT_PROBE_BED_POSITION;
|
||||||
|
int back_probe_bed_position=BACK_PROBE_BED_POSITION;
|
||||||
|
int front_probe_bed_position=FRONT_PROBE_BED_POSITION;
|
||||||
|
int auto_bed_leveling_grid_points=AUTO_BED_LEVELING_GRID_POINTS;
|
||||||
|
if (code_seen('L')) left_probe_bed_position=(int)code_value();
|
||||||
|
if (code_seen('R')) right_probe_bed_position=(int)code_value();
|
||||||
|
if (code_seen('B')) back_probe_bed_position=(int)code_value();
|
||||||
|
if (code_seen('F')) front_probe_bed_position=(int)code_value();
|
||||||
|
if (code_seen('P')) auto_bed_leveling_grid_points=(int)code_value();
|
||||||
|
|
||||||
#ifdef Z_PROBE_SLED
|
#ifdef Z_PROBE_SLED
|
||||||
dock_sled(false);
|
dock_sled(false);
|
||||||
|
@ -1754,8 +1765,8 @@ void process_commands()
|
||||||
#ifdef AUTO_BED_LEVELING_GRID
|
#ifdef AUTO_BED_LEVELING_GRID
|
||||||
// probe at the points of a lattice grid
|
// probe at the points of a lattice grid
|
||||||
|
|
||||||
int xGridSpacing = (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION) / (AUTO_BED_LEVELING_GRID_POINTS-1);
|
int xGridSpacing = (right_probe_bed_position - left_probe_bed_position) / (auto_bed_leveling_grid_points-1);
|
||||||
int yGridSpacing = (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION) / (AUTO_BED_LEVELING_GRID_POINTS-1);
|
int yGridSpacing = (back_probe_bed_position - front_probe_bed_position) / (auto_bed_leveling_grid_points-1);
|
||||||
|
|
||||||
|
|
||||||
// solve the plane equation ax + by + d = z
|
// solve the plane equation ax + by + d = z
|
||||||
|
@ -1765,32 +1776,35 @@ void process_commands()
|
||||||
// so Vx = -a Vy = -b Vz = 1 (we want the vector facing towards positive Z
|
// so Vx = -a Vy = -b Vz = 1 (we want the vector facing towards positive Z
|
||||||
|
|
||||||
// "A" matrix of the linear system of equations
|
// "A" matrix of the linear system of equations
|
||||||
double eqnAMatrix[AUTO_BED_LEVELING_GRID_POINTS*AUTO_BED_LEVELING_GRID_POINTS*3];
|
double eqnAMatrix[auto_bed_leveling_grid_points*auto_bed_leveling_grid_points*3];
|
||||||
|
|
||||||
// "B" vector of Z points
|
// "B" vector of Z points
|
||||||
double eqnBVector[AUTO_BED_LEVELING_GRID_POINTS*AUTO_BED_LEVELING_GRID_POINTS];
|
double eqnBVector[auto_bed_leveling_grid_points*auto_bed_leveling_grid_points];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int probePointCounter = 0;
|
int probePointCounter = 0;
|
||||||
bool zig = true;
|
bool zig = true;
|
||||||
|
|
||||||
for (int yProbe=FRONT_PROBE_BED_POSITION; yProbe <= BACK_PROBE_BED_POSITION; yProbe += yGridSpacing)
|
for (int yProbe=front_probe_bed_position; yProbe <= back_probe_bed_position; yProbe += yGridSpacing)
|
||||||
|
|
||||||
{
|
{
|
||||||
int xProbe, xInc;
|
int xProbe, xInc;
|
||||||
if (zig)
|
if (zig)
|
||||||
{
|
{
|
||||||
xProbe = LEFT_PROBE_BED_POSITION;
|
xProbe = left_probe_bed_position;
|
||||||
//xEnd = RIGHT_PROBE_BED_POSITION;
|
//xEnd = right_probe_bed_position;
|
||||||
xInc = xGridSpacing;
|
xInc = xGridSpacing;
|
||||||
zig = false;
|
zig = false;
|
||||||
} else // zag
|
} else // zag
|
||||||
{
|
{
|
||||||
xProbe = RIGHT_PROBE_BED_POSITION;
|
xProbe = right_probe_bed_position;
|
||||||
//xEnd = LEFT_PROBE_BED_POSITION;
|
//xEnd = left_probe_bed_position;
|
||||||
xInc = -xGridSpacing;
|
xInc = -xGridSpacing;
|
||||||
zig = true;
|
zig = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int xCount=0; xCount < AUTO_BED_LEVELING_GRID_POINTS; xCount++)
|
for (int xCount=0; xCount < auto_bed_leveling_grid_points; xCount++)
|
||||||
{
|
{
|
||||||
float z_before;
|
float z_before;
|
||||||
if (probePointCounter == 0)
|
if (probePointCounter == 0)
|
||||||
|
@ -1822,9 +1836,9 @@ void process_commands()
|
||||||
|
|
||||||
eqnBVector[probePointCounter] = measured_z;
|
eqnBVector[probePointCounter] = measured_z;
|
||||||
|
|
||||||
eqnAMatrix[probePointCounter + 0*AUTO_BED_LEVELING_GRID_POINTS*AUTO_BED_LEVELING_GRID_POINTS] = xProbe;
|
eqnAMatrix[probePointCounter + 0*auto_bed_leveling_grid_points*auto_bed_leveling_grid_points] = xProbe;
|
||||||
eqnAMatrix[probePointCounter + 1*AUTO_BED_LEVELING_GRID_POINTS*AUTO_BED_LEVELING_GRID_POINTS] = yProbe;
|
eqnAMatrix[probePointCounter + 1*auto_bed_leveling_grid_points*auto_bed_leveling_grid_points] = yProbe;
|
||||||
eqnAMatrix[probePointCounter + 2*AUTO_BED_LEVELING_GRID_POINTS*AUTO_BED_LEVELING_GRID_POINTS] = 1;
|
eqnAMatrix[probePointCounter + 2*auto_bed_leveling_grid_points*auto_bed_leveling_grid_points] = 1;
|
||||||
probePointCounter++;
|
probePointCounter++;
|
||||||
xProbe += xInc;
|
xProbe += xInc;
|
||||||
}
|
}
|
||||||
|
@ -1832,7 +1846,7 @@ void process_commands()
|
||||||
clean_up_after_endstop_move();
|
clean_up_after_endstop_move();
|
||||||
|
|
||||||
// solve lsq problem
|
// solve lsq problem
|
||||||
double *plane_equation_coefficients = qr_solve(AUTO_BED_LEVELING_GRID_POINTS*AUTO_BED_LEVELING_GRID_POINTS, 3, eqnAMatrix, eqnBVector);
|
double *plane_equation_coefficients = qr_solve(auto_bed_leveling_grid_points*auto_bed_leveling_grid_points, 3, eqnAMatrix, eqnBVector);
|
||||||
|
|
||||||
SERIAL_PROTOCOLPGM("Eqn coefficients: a: ");
|
SERIAL_PROTOCOLPGM("Eqn coefficients: a: ");
|
||||||
SERIAL_PROTOCOL(plane_equation_coefficients[0]);
|
SERIAL_PROTOCOL(plane_equation_coefficients[0]);
|
||||||
|
@ -4695,21 +4709,12 @@ bool setTargetedHotend(int code){
|
||||||
|
|
||||||
|
|
||||||
float calculate_volumetric_multiplier(float diameter) {
|
float calculate_volumetric_multiplier(float diameter) {
|
||||||
float area = .0;
|
if (!volumetric_enabled || diameter == 0) return 1.0;
|
||||||
float radius = .0;
|
float d2 = diameter * 0.5;
|
||||||
|
return 1.0 / (M_PI * d2 * d2);
|
||||||
radius = diameter * .5;
|
|
||||||
if (! volumetric_enabled || radius == 0) {
|
|
||||||
area = 1;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
area = M_PI * pow(radius, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 1.0 / area;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void calculate_volumetric_multipliers() {
|
void calculate_volumetric_multipliers() {
|
||||||
for (int i=0; i<EXTRUDERS; i++)
|
for (int i=0; i<EXTRUDERS; i++)
|
||||||
volumetric_multiplier[i] = calculate_volumetric_multiplier(filament_size[i]);
|
volumetric_multiplier[i] = calculate_volumetric_multiplier(filament_size[i]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -587,6 +587,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||||
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
||||||
|
|
||||||
|
// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
|
||||||
|
// http://reprap.org/wiki/PanelOne
|
||||||
|
//#define PANEL_ONE
|
||||||
|
|
||||||
// The MaKr3d Makr-Panel with graphic controller and SD support
|
// The MaKr3d Makr-Panel with graphic controller and SD support
|
||||||
// http://reprap.org/wiki/MaKr3d_MaKrPanel
|
// http://reprap.org/wiki/MaKr3d_MaKrPanel
|
||||||
//#define MAKRPANEL
|
//#define MAKRPANEL
|
||||||
|
@ -645,6 +649,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined (PANEL_ONE)
|
||||||
|
#define SDSUPPORT
|
||||||
|
#define ULTIMAKERCONTROLLER
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
||||||
#define DOGLCD
|
#define DOGLCD
|
||||||
|
|
|
@ -597,6 +597,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||||
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
||||||
|
|
||||||
|
// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
|
||||||
|
// http://reprap.org/wiki/PanelOne
|
||||||
|
//#define PANEL_ONE
|
||||||
|
|
||||||
// The MaKr3d Makr-Panel with graphic controller and SD support
|
// The MaKr3d Makr-Panel with graphic controller and SD support
|
||||||
// http://reprap.org/wiki/MaKr3d_MaKrPanel
|
// http://reprap.org/wiki/MaKr3d_MaKrPanel
|
||||||
//#define MAKRPANEL
|
//#define MAKRPANEL
|
||||||
|
@ -655,6 +659,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined (PANEL_ONE)
|
||||||
|
#define SDSUPPORT
|
||||||
|
#define ULTIMAKERCONTROLLER
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
||||||
#define DOGLCD
|
#define DOGLCD
|
||||||
|
|
|
@ -590,6 +590,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||||
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
||||||
|
|
||||||
|
// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
|
||||||
|
// http://reprap.org/wiki/PanelOne
|
||||||
|
//#define PANEL_ONE
|
||||||
|
|
||||||
// The MaKr3d Makr-Panel with graphic controller and SD support
|
// The MaKr3d Makr-Panel with graphic controller and SD support
|
||||||
// http://reprap.org/wiki/MaKr3d_MaKrPanel
|
// http://reprap.org/wiki/MaKr3d_MaKrPanel
|
||||||
//#define MAKRPANEL
|
//#define MAKRPANEL
|
||||||
|
@ -648,6 +652,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined (PANEL_ONE)
|
||||||
|
#define SDSUPPORT
|
||||||
|
#define ULTIMAKERCONTROLLER
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
||||||
#define DOGLCD
|
#define DOGLCD
|
||||||
|
|
|
@ -591,6 +591,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||||
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
||||||
|
|
||||||
|
// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
|
||||||
|
// http://reprap.org/wiki/PanelOne
|
||||||
|
//#define PANEL_ONE
|
||||||
|
|
||||||
// The MaKr3d Makr-Panel with graphic controller and SD support
|
// The MaKr3d Makr-Panel with graphic controller and SD support
|
||||||
// http://reprap.org/wiki/MaKr3d_MaKrPanel
|
// http://reprap.org/wiki/MaKr3d_MaKrPanel
|
||||||
//#define MAKRPANEL
|
//#define MAKRPANEL
|
||||||
|
@ -649,6 +653,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined (PANEL_ONE)
|
||||||
|
#define SDSUPPORT
|
||||||
|
#define ULTIMAKERCONTROLLER
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
||||||
#define DOGLCD
|
#define DOGLCD
|
||||||
|
|
|
@ -495,6 +495,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||||
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
||||||
|
|
||||||
|
// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
|
||||||
|
// http://reprap.org/wiki/PanelOne
|
||||||
|
//#define PANEL_ONE
|
||||||
|
|
||||||
// The MaKr3d Makr-Panel with graphic controller and SD support
|
// The MaKr3d Makr-Panel with graphic controller and SD support
|
||||||
// http://reprap.org/wiki/MaKr3d_MaKrPanel
|
// http://reprap.org/wiki/MaKr3d_MaKrPanel
|
||||||
//#define MAKRPANEL
|
//#define MAKRPANEL
|
||||||
|
@ -560,6 +564,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined (PANEL_ONE)
|
||||||
|
#define SDSUPPORT
|
||||||
|
#define ULTIMAKERCONTROLLER
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
||||||
#define DOGLCD
|
#define DOGLCD
|
||||||
|
|
|
@ -565,6 +565,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||||
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
||||||
|
|
||||||
|
// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
|
||||||
|
// http://reprap.org/wiki/PanelOne
|
||||||
|
//#define PANEL_ONE
|
||||||
|
|
||||||
// The MaKr3d Makr-Panel with graphic controller and SD support
|
// The MaKr3d Makr-Panel with graphic controller and SD support
|
||||||
// http://reprap.org/wiki/MaKr3d_MaKrPanel
|
// http://reprap.org/wiki/MaKr3d_MaKrPanel
|
||||||
//#define MAKRPANEL
|
//#define MAKRPANEL
|
||||||
|
@ -623,6 +627,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined (PANEL_ONE)
|
||||||
|
#define SDSUPPORT
|
||||||
|
#define ULTIMAKERCONTROLLER
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
||||||
#define DOGLCD
|
#define DOGLCD
|
||||||
|
|
|
@ -578,6 +578,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||||
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
||||||
|
|
||||||
|
// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
|
||||||
|
// http://reprap.org/wiki/PanelOne
|
||||||
|
//#define PANEL_ONE
|
||||||
|
|
||||||
// The MaKr3d Makr-Panel with graphic controller and SD support
|
// The MaKr3d Makr-Panel with graphic controller and SD support
|
||||||
// http://reprap.org/wiki/MaKr3d_MaKrPanel
|
// http://reprap.org/wiki/MaKr3d_MaKrPanel
|
||||||
//#define MAKRPANEL
|
//#define MAKRPANEL
|
||||||
|
@ -636,6 +640,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined (PANEL_ONE)
|
||||||
|
#define SDSUPPORT
|
||||||
|
#define ULTIMAKERCONTROLLER
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
||||||
#define DOGLCD
|
#define DOGLCD
|
||||||
|
|
|
@ -65,6 +65,18 @@
|
||||||
#ifndef MSG_PREHEAT_ABS_SETTINGS
|
#ifndef MSG_PREHEAT_ABS_SETTINGS
|
||||||
#define MSG_PREHEAT_ABS_SETTINGS MSG_PREHEAT_ABS " conf"
|
#define MSG_PREHEAT_ABS_SETTINGS MSG_PREHEAT_ABS " conf"
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef MSG_H1
|
||||||
|
#define MSG_H1 "1"
|
||||||
|
#endif
|
||||||
|
#ifndef MSG_H2
|
||||||
|
#define MSG_H2 "2"
|
||||||
|
#endif
|
||||||
|
#ifndef MSG_H3
|
||||||
|
#define MSG_H3 "3"
|
||||||
|
#endif
|
||||||
|
#ifndef MSG_H4
|
||||||
|
#define MSG_H4 "4"
|
||||||
|
#endif
|
||||||
#ifndef MSG_COOLDOWN
|
#ifndef MSG_COOLDOWN
|
||||||
#define MSG_COOLDOWN "Cooldown"
|
#define MSG_COOLDOWN "Cooldown"
|
||||||
#endif
|
#endif
|
||||||
|
@ -110,6 +122,15 @@
|
||||||
#ifndef MSG_NOZZLE
|
#ifndef MSG_NOZZLE
|
||||||
#define MSG_NOZZLE "Nozzle"
|
#define MSG_NOZZLE "Nozzle"
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef MSG_N2
|
||||||
|
#define MSG_N2 " 2"
|
||||||
|
#endif
|
||||||
|
#ifndef MSG_N3
|
||||||
|
#define MSG_N3 " 3"
|
||||||
|
#endif
|
||||||
|
#ifndef MSG_N4
|
||||||
|
#define MSG_N4 " 4"
|
||||||
|
#endif
|
||||||
#ifndef MSG_BED
|
#ifndef MSG_BED
|
||||||
#define MSG_BED "Bed"
|
#define MSG_BED "Bed"
|
||||||
#endif
|
#endif
|
||||||
|
@ -119,6 +140,18 @@
|
||||||
#ifndef MSG_FLOW
|
#ifndef MSG_FLOW
|
||||||
#define MSG_FLOW "Flow"
|
#define MSG_FLOW "Flow"
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef MSG_F0
|
||||||
|
#define MSG_F0 " 0"
|
||||||
|
#endif
|
||||||
|
#ifndef MSG_F1
|
||||||
|
#define MSG_F1 " 1"
|
||||||
|
#endif
|
||||||
|
#ifndef MSG_F2
|
||||||
|
#define MSG_F2 " 2"
|
||||||
|
#endif
|
||||||
|
#ifndef MSG_F3
|
||||||
|
#define MSG_F3 " 3"
|
||||||
|
#endif
|
||||||
#ifndef MSG_CONTROL
|
#ifndef MSG_CONTROL
|
||||||
#define MSG_CONTROL "Control"
|
#define MSG_CONTROL "Control"
|
||||||
#endif
|
#endif
|
||||||
|
@ -152,6 +185,15 @@
|
||||||
#ifndef MSG_PID_C
|
#ifndef MSG_PID_C
|
||||||
#define MSG_PID_C "PID-C"
|
#define MSG_PID_C "PID-C"
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef MSG_E2
|
||||||
|
#define MSG_E2 " E2"
|
||||||
|
#endif
|
||||||
|
#ifndef MSG_E3
|
||||||
|
#define MSG_E3 " E3"
|
||||||
|
#endif
|
||||||
|
#ifndef MSG_E4
|
||||||
|
#define MSG_E4 " E4"
|
||||||
|
#endif
|
||||||
#ifndef MSG_ACC
|
#ifndef MSG_ACC
|
||||||
#define MSG_ACC "Accel"
|
#define MSG_ACC "Accel"
|
||||||
#endif
|
#endif
|
||||||
|
@ -213,7 +255,7 @@
|
||||||
#define MSG_VOLUMETRIC "Filament"
|
#define MSG_VOLUMETRIC "Filament"
|
||||||
#endif
|
#endif
|
||||||
#ifndef MSG_VOLUMETRIC_ENABLED
|
#ifndef MSG_VOLUMETRIC_ENABLED
|
||||||
#define MSG_VOLUMETRIC_ENABLED "E in mm" STR_h3
|
#define MSG_VOLUMETRIC_ENABLED "E in mm" STR_h3
|
||||||
#endif
|
#endif
|
||||||
#ifndef MSG_FILAMENT_SIZE_EXTRUDER_0
|
#ifndef MSG_FILAMENT_SIZE_EXTRUDER_0
|
||||||
#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1"
|
#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1"
|
||||||
|
|
|
@ -122,12 +122,22 @@
|
||||||
#ifdef ULTRA_LCD
|
#ifdef ULTRA_LCD
|
||||||
|
|
||||||
#ifdef NEWPANEL
|
#ifdef NEWPANEL
|
||||||
#define LCD_PINS_RS 16
|
#ifdef PANEL_ONE
|
||||||
#define LCD_PINS_ENABLE 17
|
#define LCD_PINS_RS 40
|
||||||
#define LCD_PINS_D4 23
|
#define LCD_PINS_ENABLE 42
|
||||||
#define LCD_PINS_D5 25
|
#define LCD_PINS_D4 65
|
||||||
#define LCD_PINS_D6 27
|
#define LCD_PINS_D5 66
|
||||||
#define LCD_PINS_D7 29
|
#define LCD_PINS_D6 44
|
||||||
|
#define LCD_PINS_D7 64
|
||||||
|
#else
|
||||||
|
#define LCD_PINS_RS 16
|
||||||
|
#define LCD_PINS_ENABLE 17
|
||||||
|
#define LCD_PINS_D4 23
|
||||||
|
#define LCD_PINS_D5 25
|
||||||
|
#define LCD_PINS_D6 27
|
||||||
|
#define LCD_PINS_D7 29
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef REPRAP_DISCOUNT_SMART_CONTROLLER
|
#ifdef REPRAP_DISCOUNT_SMART_CONTROLLER
|
||||||
#define BEEPER 37
|
#define BEEPER 37
|
||||||
|
|
|
@ -1096,13 +1096,26 @@ const short temptable_1047[][2] PROGMEM = {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (THERMISTORHEATER_0 == 999) || (THERMISTORHEATER_1 == 999) || (THERMISTORHEATER_2 == 999) || (THERMISTORHEATER_3 == 999) || (THERMISTORBED == 999) //User defined table
|
#if (THERMISTORHEATER_0 == 999) || (THERMISTORHEATER_1 == 999) || (THERMISTORHEATER_2 == 999) || (THERMISTORHEATER_3 == 999) || (THERMISTORBED == 999) //User defined table
|
||||||
// Dummy Thermistor table.. It will ALWAYS read 25C.
|
// Dummy Thermistor table.. It will ALWAYS read a fixed value.
|
||||||
const short temptable_999[][2] PROGMEM = {
|
#ifndef DUMMY_THERMISTOR_999_VALUE
|
||||||
{1*OVERSAMPLENR, 25},
|
#define DUMMY_THERMISTOR_999_VALUE 25
|
||||||
{1023*OVERSAMPLENR, 25}
|
#endif
|
||||||
|
const short temptable_999[][2] PROGMEM = {
|
||||||
|
{1*OVERSAMPLENR, DUMMY_THERMISTOR_999_VALUE},
|
||||||
|
{1023*OVERSAMPLENR, DUMMY_THERMISTOR_999_VALUE}
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if (THERMISTORHEATER_0 == 998) || (THERMISTORHEATER_1 == 998) || (THERMISTORHEATER_2 == 998) || (THERMISTORHEATER_3 == 998) || (THERMISTORBED == 998) //User defined table
|
||||||
|
// Dummy Thermistor table.. It will ALWAYS read a fixed value.
|
||||||
|
#ifndef DUMMY_THERMISTOR_998_VALUE
|
||||||
|
#define DUMMY_THERMISTOR_998_VALUE 25
|
||||||
|
#endif
|
||||||
|
const short temptable_998[][2] PROGMEM = {
|
||||||
|
{1*OVERSAMPLENR, DUMMY_THERMISTOR_998_VALUE},
|
||||||
|
{1023*OVERSAMPLENR, DUMMY_THERMISTOR_998_VALUE}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#define _TT_NAME(_N) temptable_ ## _N
|
#define _TT_NAME(_N) temptable_ ## _N
|
||||||
|
|
1580
Marlin/ultralcd.cpp
1580
Marlin/ultralcd.cpp
|
@ -262,15 +262,15 @@ static void lcd_status_screen()
|
||||||
#endif
|
#endif
|
||||||
#endif //LCD_PROGRESS_BAR
|
#endif //LCD_PROGRESS_BAR
|
||||||
|
|
||||||
if (lcd_status_update_delay)
|
if (lcd_status_update_delay)
|
||||||
lcd_status_update_delay--;
|
lcd_status_update_delay--;
|
||||||
else
|
else
|
||||||
lcdDrawUpdate = 1;
|
lcdDrawUpdate = 1;
|
||||||
|
|
||||||
if (lcdDrawUpdate) {
|
if (lcdDrawUpdate) {
|
||||||
lcd_implementation_status_screen();
|
lcd_implementation_status_screen();
|
||||||
lcd_status_update_delay = 10; /* redraw the main screen every second. This is easier then trying keep track of all things that change on the screen */
|
lcd_status_update_delay = 10; /* redraw the main screen every second. This is easier then trying keep track of all things that change on the screen */
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
|
|
||||||
|
@ -346,86 +346,82 @@ static void lcd_sdcard_pause() { card.pauseSDPrint(); }
|
||||||
|
|
||||||
static void lcd_sdcard_resume() { card.startFileprint(); }
|
static void lcd_sdcard_resume() { card.startFileprint(); }
|
||||||
|
|
||||||
static void lcd_sdcard_stop()
|
static void lcd_sdcard_stop() {
|
||||||
{
|
card.sdprinting = false;
|
||||||
card.sdprinting = false;
|
card.closefile();
|
||||||
card.closefile();
|
quickStop();
|
||||||
quickStop();
|
if (SD_FINISHED_STEPPERRELEASE) {
|
||||||
if(SD_FINISHED_STEPPERRELEASE)
|
enquecommands_P(PSTR(SD_FINISHED_RELEASECOMMAND));
|
||||||
{
|
}
|
||||||
enquecommands_P(PSTR(SD_FINISHED_RELEASECOMMAND));
|
autotempShutdown();
|
||||||
}
|
|
||||||
autotempShutdown();
|
|
||||||
|
|
||||||
cancel_heatup = true;
|
cancel_heatup = true;
|
||||||
|
|
||||||
lcd_setstatus(MSG_PRINT_ABORTED);
|
lcd_setstatus(MSG_PRINT_ABORTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Menu implementation */
|
/* Menu implementation */
|
||||||
static void lcd_main_menu()
|
static void lcd_main_menu() {
|
||||||
{
|
START_MENU();
|
||||||
START_MENU();
|
MENU_ITEM(back, MSG_WATCH, lcd_status_screen);
|
||||||
MENU_ITEM(back, MSG_WATCH, lcd_status_screen);
|
if (movesplanned() || IS_SD_PRINTING) {
|
||||||
if (movesplanned() || IS_SD_PRINTING)
|
MENU_ITEM(submenu, MSG_TUNE, lcd_tune_menu);
|
||||||
{
|
}
|
||||||
MENU_ITEM(submenu, MSG_TUNE, lcd_tune_menu);
|
else {
|
||||||
}else{
|
MENU_ITEM(submenu, MSG_PREPARE, lcd_prepare_menu);
|
||||||
MENU_ITEM(submenu, MSG_PREPARE, lcd_prepare_menu);
|
#ifdef DELTA_CALIBRATION_MENU
|
||||||
#ifdef DELTA_CALIBRATION_MENU
|
MENU_ITEM(submenu, MSG_DELTA_CALIBRATE, lcd_delta_calibrate_menu);
|
||||||
MENU_ITEM(submenu, MSG_DELTA_CALIBRATE, lcd_delta_calibrate_menu);
|
#endif
|
||||||
#endif // DELTA_CALIBRATION_MENU
|
}
|
||||||
}
|
MENU_ITEM(submenu, MSG_CONTROL, lcd_control_menu);
|
||||||
/*JFR TEST*/ MENU_ITEM(gcode, "test multiline", PSTR("G4 S3\nM104 S50\nG4 S1\nM104 S200\nG4 S2\nM104 S0")); // SD-card changed by user
|
|
||||||
MENU_ITEM(submenu, MSG_CONTROL, lcd_control_menu);
|
|
||||||
#ifdef SDSUPPORT
|
|
||||||
if (card.cardOK)
|
|
||||||
{
|
|
||||||
if (card.isFileOpen())
|
|
||||||
{
|
|
||||||
if (card.sdprinting)
|
|
||||||
MENU_ITEM(function, MSG_PAUSE_PRINT, lcd_sdcard_pause);
|
|
||||||
else
|
|
||||||
MENU_ITEM(function, MSG_RESUME_PRINT, lcd_sdcard_resume);
|
|
||||||
MENU_ITEM(function, MSG_STOP_PRINT, lcd_sdcard_stop);
|
|
||||||
}else{
|
|
||||||
MENU_ITEM(submenu, MSG_CARD_MENU, lcd_sdcard_menu);
|
|
||||||
#if SDCARDDETECT < 1
|
|
||||||
MENU_ITEM(gcode, MSG_CNG_SDCARD, PSTR("M21")); // SD-card changed by user
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
MENU_ITEM(submenu, MSG_NO_CARD, lcd_sdcard_menu);
|
|
||||||
#if SDCARDDETECT < 1
|
|
||||||
MENU_ITEM(gcode, MSG_INIT_SDCARD, PSTR("M21")); // Manually initialize the SD-card via user interface
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
END_MENU();
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef SDSUPPORT
|
#ifdef SDSUPPORT
|
||||||
static void lcd_autostart_sd()
|
if (card.cardOK) {
|
||||||
{
|
if (card.isFileOpen()) {
|
||||||
card.autostart_index=0;
|
if (card.sdprinting)
|
||||||
card.setroot();
|
MENU_ITEM(function, MSG_PAUSE_PRINT, lcd_sdcard_pause);
|
||||||
card.checkautostart(true);
|
else
|
||||||
}
|
MENU_ITEM(function, MSG_RESUME_PRINT, lcd_sdcard_resume);
|
||||||
#endif
|
MENU_ITEM(function, MSG_STOP_PRINT, lcd_sdcard_stop);
|
||||||
|
}
|
||||||
void lcd_set_home_offsets()
|
else {
|
||||||
{
|
MENU_ITEM(submenu, MSG_CARD_MENU, lcd_sdcard_menu);
|
||||||
for(int8_t i=0; i < NUM_AXIS; i++) {
|
#if SDCARDDETECT < 1
|
||||||
if (i != E_AXIS) {
|
MENU_ITEM(gcode, MSG_CNG_SDCARD, PSTR("M21")); // SD-card changed by user
|
||||||
add_homing[i] -= current_position[i];
|
#endif
|
||||||
current_position[i] = 0.0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
plan_set_position(0.0, 0.0, 0.0, current_position[E_AXIS]);
|
else {
|
||||||
|
MENU_ITEM(submenu, MSG_NO_CARD, lcd_sdcard_menu);
|
||||||
|
#if SDCARDDETECT < 1
|
||||||
|
MENU_ITEM(gcode, MSG_INIT_SDCARD, PSTR("M21")); // Manually initialize the SD-card via user interface
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#endif //SDSUPPORT
|
||||||
|
|
||||||
// Audio feedback
|
END_MENU();
|
||||||
enquecommands_P(PSTR("M300 S659 P200\nM300 S698 P200"));
|
}
|
||||||
lcd_return_to_status();
|
|
||||||
|
#ifdef SDSUPPORT
|
||||||
|
static void lcd_autostart_sd() {
|
||||||
|
card.autostart_index = 0;
|
||||||
|
card.setroot();
|
||||||
|
card.checkautostart(true);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void lcd_set_home_offsets() {
|
||||||
|
for(int8_t i=0; i < NUM_AXIS; i++) {
|
||||||
|
if (i != E_AXIS) {
|
||||||
|
add_homing[i] -= current_position[i];
|
||||||
|
current_position[i] = 0.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
plan_set_position(0.0, 0.0, 0.0, current_position[E_AXIS]);
|
||||||
|
|
||||||
|
// Audio feedback
|
||||||
|
enquecommands_P(PSTR("M300 S659 P200\nM300 S698 P200"));
|
||||||
|
lcd_return_to_status();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -446,274 +442,181 @@ void lcd_set_home_offsets()
|
||||||
|
|
||||||
#endif //BABYSTEPPING
|
#endif //BABYSTEPPING
|
||||||
|
|
||||||
static void lcd_tune_menu()
|
static void lcd_tune_menu() {
|
||||||
{
|
START_MENU();
|
||||||
START_MENU();
|
MENU_ITEM(back, MSG_MAIN, lcd_main_menu);
|
||||||
MENU_ITEM(back, MSG_MAIN, lcd_main_menu);
|
MENU_ITEM_EDIT(int3, MSG_SPEED, &feedmultiply, 10, 999);
|
||||||
MENU_ITEM_EDIT(int3, MSG_SPEED, &feedmultiply, 10, 999);
|
#if TEMP_SENSOR_0 != 0
|
||||||
#if TEMP_SENSOR_0 != 0
|
|
||||||
MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE, &target_temperature[0], 0, HEATER_0_MAXTEMP - 15);
|
MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE, &target_temperature[0], 0, HEATER_0_MAXTEMP - 15);
|
||||||
#endif
|
#endif
|
||||||
#if TEMP_SENSOR_1 != 0
|
#if TEMP_SENSOR_1 != 0
|
||||||
MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE " 2", &target_temperature[1], 0, HEATER_1_MAXTEMP - 15);
|
MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE MSG_N2, &target_temperature[1], 0, HEATER_1_MAXTEMP - 15);
|
||||||
#endif
|
#endif
|
||||||
#if TEMP_SENSOR_2 != 0
|
#if TEMP_SENSOR_2 != 0
|
||||||
MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE " 3", &target_temperature[2], 0, HEATER_2_MAXTEMP - 15);
|
MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE MSG_N3, &target_temperature[2], 0, HEATER_2_MAXTEMP - 15);
|
||||||
#endif
|
#endif
|
||||||
#if TEMP_SENSOR_3 != 0
|
#if TEMP_SENSOR_3 != 0
|
||||||
MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE " 4", &target_temperature[3], 0, HEATER_3_MAXTEMP - 15);
|
MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE MSG_N4, &target_temperature[3], 0, HEATER_3_MAXTEMP - 15);
|
||||||
#endif
|
#endif
|
||||||
|
#if TEMP_SENSOR_BED != 0
|
||||||
|
|
||||||
#if TEMP_SENSOR_BED != 0
|
|
||||||
MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_BED, &target_temperature_bed, 0, BED_MAXTEMP - 15);
|
MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_BED, &target_temperature_bed, 0, BED_MAXTEMP - 15);
|
||||||
#endif
|
#endif
|
||||||
MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_FAN_SPEED, &fanSpeed, 0, 255);
|
MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_FAN_SPEED, &fanSpeed, 0, 255);
|
||||||
MENU_ITEM_EDIT(int3, MSG_FLOW, &extrudemultiply, 10, 999);
|
MENU_ITEM_EDIT(int3, MSG_FLOW, &extrudemultiply, 10, 999);
|
||||||
MENU_ITEM_EDIT(int3, MSG_FLOW " 0", &extruder_multiply[0], 10, 999);
|
MENU_ITEM_EDIT(int3, MSG_FLOW MSG_F0, &extruder_multiply[0], 10, 999);
|
||||||
#if TEMP_SENSOR_1 != 0
|
#if TEMP_SENSOR_1 != 0
|
||||||
MENU_ITEM_EDIT(int3, MSG_FLOW " 1", &extruder_multiply[1], 10, 999);
|
MENU_ITEM_EDIT(int3, MSG_FLOW MSG_F1, &extruder_multiply[1], 10, 999);
|
||||||
#endif
|
#endif
|
||||||
#if TEMP_SENSOR_2 != 0
|
#if TEMP_SENSOR_2 != 0
|
||||||
MENU_ITEM_EDIT(int3, MSG_FLOW " 2", &extruder_multiply[2], 10, 999);
|
MENU_ITEM_EDIT(int3, MSG_FLOW MSG_F2, &extruder_multiply[2], 10, 999);
|
||||||
#endif
|
#endif
|
||||||
#if TEMP_SENSOR_3 != 0
|
#if TEMP_SENSOR_3 != 0
|
||||||
MENU_ITEM_EDIT(int3, MSG_FLOW " 3", &extruder_multiply[3], 10, 999);
|
MENU_ITEM_EDIT(int3, MSG_FLOW MSG_F3, &extruder_multiply[3], 10, 999);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef BABYSTEPPING
|
||||||
#ifdef BABYSTEPPING
|
|
||||||
#ifdef BABYSTEP_XY
|
#ifdef BABYSTEP_XY
|
||||||
MENU_ITEM(submenu, MSG_BABYSTEP_X, lcd_babystep_x);
|
MENU_ITEM(submenu, MSG_BABYSTEP_X, lcd_babystep_x);
|
||||||
MENU_ITEM(submenu, MSG_BABYSTEP_Y, lcd_babystep_y);
|
MENU_ITEM(submenu, MSG_BABYSTEP_Y, lcd_babystep_y);
|
||||||
#endif //BABYSTEP_XY
|
#endif //BABYSTEP_XY
|
||||||
MENU_ITEM(submenu, MSG_BABYSTEP_Z, lcd_babystep_z);
|
MENU_ITEM(submenu, MSG_BABYSTEP_Z, lcd_babystep_z);
|
||||||
#endif
|
#endif
|
||||||
#ifdef FILAMENTCHANGEENABLE
|
#ifdef FILAMENTCHANGEENABLE
|
||||||
MENU_ITEM(gcode, MSG_FILAMENTCHANGE, PSTR("M600"));
|
MENU_ITEM(gcode, MSG_FILAMENTCHANGE, PSTR("M600"));
|
||||||
#endif
|
#endif
|
||||||
END_MENU();
|
END_MENU();
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_preheat_pla0()
|
void _lcd_preheat(int endnum, const float temph, const float tempb, const int fan) {
|
||||||
{
|
if (temph > 0) setTargetHotend(temph, endnum);
|
||||||
setTargetHotend0(plaPreheatHotendTemp);
|
setTargetBed(tempb);
|
||||||
setTargetBed(plaPreheatHPBTemp);
|
fanSpeed = fan;
|
||||||
fanSpeed = plaPreheatFanSpeed;
|
lcd_return_to_status();
|
||||||
lcd_return_to_status();
|
setWatch(); // heater sanity check timer
|
||||||
setWatch(); // heater sanity check timer
|
|
||||||
}
|
|
||||||
|
|
||||||
void lcd_preheat_abs0()
|
|
||||||
{
|
|
||||||
setTargetHotend0(absPreheatHotendTemp);
|
|
||||||
setTargetBed(absPreheatHPBTemp);
|
|
||||||
fanSpeed = absPreheatFanSpeed;
|
|
||||||
lcd_return_to_status();
|
|
||||||
setWatch(); // heater sanity check timer
|
|
||||||
}
|
}
|
||||||
|
void lcd_preheat_pla0() { _lcd_preheat(0, plaPreheatHotendTemp, plaPreheatHPBTemp, plaPreheatFanSpeed); }
|
||||||
|
void lcd_preheat_abs0() { _lcd_preheat(0, absPreheatHotendTemp, absPreheatHPBTemp, absPreheatFanSpeed); }
|
||||||
|
|
||||||
#if TEMP_SENSOR_1 != 0 //2nd extruder preheat
|
#if TEMP_SENSOR_1 != 0 //2nd extruder preheat
|
||||||
void lcd_preheat_pla1()
|
void lcd_preheat_pla1() { _lcd_preheat(1, plaPreheatHotendTemp, plaPreheatHPBTemp, plaPreheatFanSpeed); }
|
||||||
{
|
void lcd_preheat_abs1() { _lcd_preheat(1, absPreheatHotendTemp, absPreheatHPBTemp, absPreheatFanSpeed); }
|
||||||
setTargetHotend1(plaPreheatHotendTemp);
|
|
||||||
setTargetBed(plaPreheatHPBTemp);
|
|
||||||
fanSpeed = plaPreheatFanSpeed;
|
|
||||||
lcd_return_to_status();
|
|
||||||
setWatch(); // heater sanity check timer
|
|
||||||
}
|
|
||||||
|
|
||||||
void lcd_preheat_abs1()
|
|
||||||
{
|
|
||||||
setTargetHotend1(absPreheatHotendTemp);
|
|
||||||
setTargetBed(absPreheatHPBTemp);
|
|
||||||
fanSpeed = absPreheatFanSpeed;
|
|
||||||
lcd_return_to_status();
|
|
||||||
setWatch(); // heater sanity check timer
|
|
||||||
}
|
|
||||||
#endif //2nd extruder preheat
|
#endif //2nd extruder preheat
|
||||||
|
|
||||||
#if TEMP_SENSOR_2 != 0 //3 extruder preheat
|
#if TEMP_SENSOR_2 != 0 //3 extruder preheat
|
||||||
void lcd_preheat_pla2()
|
void lcd_preheat_pla2() { _lcd_preheat(2, plaPreheatHotendTemp, plaPreheatHPBTemp, plaPreheatFanSpeed); }
|
||||||
{
|
void lcd_preheat_abs2() { _lcd_preheat(2, absPreheatHotendTemp, absPreheatHPBTemp, absPreheatFanSpeed); }
|
||||||
setTargetHotend2(plaPreheatHotendTemp);
|
|
||||||
setTargetBed(plaPreheatHPBTemp);
|
|
||||||
fanSpeed = plaPreheatFanSpeed;
|
|
||||||
lcd_return_to_status();
|
|
||||||
setWatch(); // heater sanity check timer
|
|
||||||
}
|
|
||||||
|
|
||||||
void lcd_preheat_abs2()
|
|
||||||
{
|
|
||||||
setTargetHotend2(absPreheatHotendTemp);
|
|
||||||
setTargetBed(absPreheatHPBTemp);
|
|
||||||
fanSpeed = absPreheatFanSpeed;
|
|
||||||
lcd_return_to_status();
|
|
||||||
setWatch(); // heater sanity check timer
|
|
||||||
}
|
|
||||||
#endif //3 extruder preheat
|
#endif //3 extruder preheat
|
||||||
|
|
||||||
#if TEMP_SENSOR_3 != 0 //4 extruder preheat
|
#if TEMP_SENSOR_3 != 0 //4 extruder preheat
|
||||||
void lcd_preheat_pla3()
|
void lcd_preheat_pla3() { _lcd_preheat(3, plaPreheatHotendTemp, plaPreheatHPBTemp, plaPreheatFanSpeed); }
|
||||||
{
|
void lcd_preheat_abs3() { _lcd_preheat(3, absPreheatHotendTemp, absPreheatHPBTemp, absPreheatFanSpeed); }
|
||||||
setTargetHotend3(plaPreheatHotendTemp);
|
|
||||||
setTargetBed(plaPreheatHPBTemp);
|
|
||||||
fanSpeed = plaPreheatFanSpeed;
|
|
||||||
lcd_return_to_status();
|
|
||||||
setWatch(); // heater sanity check timer
|
|
||||||
}
|
|
||||||
|
|
||||||
void lcd_preheat_abs3()
|
|
||||||
{
|
|
||||||
setTargetHotend3(absPreheatHotendTemp);
|
|
||||||
setTargetBed(absPreheatHPBTemp);
|
|
||||||
fanSpeed = absPreheatFanSpeed;
|
|
||||||
lcd_return_to_status();
|
|
||||||
setWatch(); // heater sanity check timer
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif //4 extruder preheat
|
#endif //4 extruder preheat
|
||||||
|
|
||||||
#if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 //more than one extruder present
|
#if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 //more than one extruder present
|
||||||
void lcd_preheat_pla0123()
|
void lcd_preheat_pla0123() {
|
||||||
{
|
|
||||||
setTargetHotend0(plaPreheatHotendTemp);
|
setTargetHotend0(plaPreheatHotendTemp);
|
||||||
setTargetHotend1(plaPreheatHotendTemp);
|
setTargetHotend1(plaPreheatHotendTemp);
|
||||||
setTargetHotend2(plaPreheatHotendTemp);
|
setTargetHotend2(plaPreheatHotendTemp);
|
||||||
setTargetHotend3(plaPreheatHotendTemp);
|
_lcd_preheat(3, plaPreheatHotendTemp, plaPreheatHPBTemp, plaPreheatFanSpeed);
|
||||||
setTargetBed(plaPreheatHPBTemp);
|
}
|
||||||
fanSpeed = plaPreheatFanSpeed;
|
void lcd_preheat_abs0123() {
|
||||||
lcd_return_to_status();
|
|
||||||
setWatch(); // heater sanity check timer
|
|
||||||
}
|
|
||||||
|
|
||||||
void lcd_preheat_abs0123()
|
|
||||||
{
|
|
||||||
setTargetHotend0(absPreheatHotendTemp);
|
setTargetHotend0(absPreheatHotendTemp);
|
||||||
setTargetHotend1(absPreheatHotendTemp);
|
setTargetHotend1(absPreheatHotendTemp);
|
||||||
setTargetHotend2(absPreheatHotendTemp);
|
setTargetHotend2(absPreheatHotendTemp);
|
||||||
setTargetHotend3(absPreheatHotendTemp);
|
_lcd_preheat(3, absPreheatHotendTemp, absPreheatHPBTemp, absPreheatFanSpeed);
|
||||||
setTargetBed(absPreheatHPBTemp);
|
}
|
||||||
fanSpeed = absPreheatFanSpeed;
|
|
||||||
lcd_return_to_status();
|
|
||||||
setWatch(); // heater sanity check timer
|
|
||||||
}
|
|
||||||
#endif //more than one extruder present
|
#endif //more than one extruder present
|
||||||
|
|
||||||
void lcd_preheat_pla_bedonly()
|
void lcd_preheat_pla_bedonly() { _lcd_preheat(0, 0, plaPreheatHPBTemp, plaPreheatFanSpeed); }
|
||||||
{
|
void lcd_preheat_abs_bedonly() { _lcd_preheat(0, 0, absPreheatHPBTemp, absPreheatFanSpeed); }
|
||||||
setTargetBed(plaPreheatHPBTemp);
|
|
||||||
fanSpeed = plaPreheatFanSpeed;
|
|
||||||
lcd_return_to_status();
|
|
||||||
setWatch(); // heater sanity check timer
|
|
||||||
}
|
|
||||||
|
|
||||||
void lcd_preheat_abs_bedonly()
|
static void lcd_preheat_pla_menu() {
|
||||||
{
|
|
||||||
setTargetBed(absPreheatHPBTemp);
|
|
||||||
fanSpeed = absPreheatFanSpeed;
|
|
||||||
lcd_return_to_status();
|
|
||||||
setWatch(); // heater sanity check timer
|
|
||||||
}
|
|
||||||
|
|
||||||
static void lcd_preheat_pla_menu()
|
|
||||||
{
|
|
||||||
START_MENU();
|
START_MENU();
|
||||||
MENU_ITEM(back, MSG_PREPARE, lcd_prepare_menu);
|
MENU_ITEM(back, MSG_PREPARE, lcd_prepare_menu);
|
||||||
MENU_ITEM(function, MSG_PREHEAT_PLA_N "1", lcd_preheat_pla0);
|
MENU_ITEM(function, MSG_PREHEAT_PLA_N MSG_H1, lcd_preheat_pla0);
|
||||||
#if TEMP_SENSOR_1 != 0 //2 extruder preheat
|
#if TEMP_SENSOR_1 != 0 //2 extruder preheat
|
||||||
MENU_ITEM(function, MSG_PREHEAT_PLA_N "2", lcd_preheat_pla1);
|
MENU_ITEM(function, MSG_PREHEAT_PLA_N MSG_H2, lcd_preheat_pla1);
|
||||||
#endif //2 extruder preheat
|
#endif //2 extruder preheat
|
||||||
#if TEMP_SENSOR_2 != 0 //3 extruder preheat
|
#if TEMP_SENSOR_2 != 0 //3 extruder preheat
|
||||||
MENU_ITEM(function, MSG_PREHEAT_PLA_N "3", lcd_preheat_pla2);
|
MENU_ITEM(function, MSG_PREHEAT_PLA_N MSG_H3, lcd_preheat_pla2);
|
||||||
#endif //3 extruder preheat
|
#endif //3 extruder preheat
|
||||||
#if TEMP_SENSOR_3 != 0 //4 extruder preheat
|
#if TEMP_SENSOR_3 != 0 //4 extruder preheat
|
||||||
MENU_ITEM(function, MSG_PREHEAT_PLA_N "4", lcd_preheat_pla3);
|
MENU_ITEM(function, MSG_PREHEAT_PLA_N MSG_H4, lcd_preheat_pla3);
|
||||||
#endif //4 extruder preheat
|
#endif //4 extruder preheat
|
||||||
#if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 //all extruder preheat
|
#if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 //all extruder preheat
|
||||||
MENU_ITEM(function, MSG_PREHEAT_PLA_ALL, lcd_preheat_pla0123);
|
MENU_ITEM(function, MSG_PREHEAT_PLA_ALL, lcd_preheat_pla0123);
|
||||||
#endif //all extruder preheat
|
#endif //all extruder preheat
|
||||||
#if TEMP_SENSOR_BED != 0
|
#if TEMP_SENSOR_BED != 0
|
||||||
MENU_ITEM(function, MSG_PREHEAT_PLA_BEDONLY, lcd_preheat_pla_bedonly);
|
MENU_ITEM(function, MSG_PREHEAT_PLA_BEDONLY, lcd_preheat_pla_bedonly);
|
||||||
#endif
|
#endif
|
||||||
END_MENU();
|
END_MENU();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lcd_preheat_abs_menu()
|
static void lcd_preheat_abs_menu() {
|
||||||
{
|
|
||||||
START_MENU();
|
START_MENU();
|
||||||
MENU_ITEM(back, MSG_PREPARE, lcd_prepare_menu);
|
MENU_ITEM(back, MSG_PREPARE, lcd_prepare_menu);
|
||||||
MENU_ITEM(function, MSG_PREHEAT_ABS_N "1", lcd_preheat_abs0);
|
MENU_ITEM(function, MSG_PREHEAT_ABS_N MSG_H1, lcd_preheat_abs0);
|
||||||
#if TEMP_SENSOR_1 != 0 //2 extruder preheat
|
#if TEMP_SENSOR_1 != 0 //2 extruder preheat
|
||||||
MENU_ITEM(function, MSG_PREHEAT_ABS_N "2", lcd_preheat_abs1);
|
MENU_ITEM(function, MSG_PREHEAT_ABS_N MSG_H2, lcd_preheat_abs1);
|
||||||
#endif //2 extruder preheat
|
#endif //2 extruder preheat
|
||||||
#if TEMP_SENSOR_2 != 0 //3 extruder preheat
|
#if TEMP_SENSOR_2 != 0 //3 extruder preheat
|
||||||
MENU_ITEM(function, MSG_PREHEAT_ABS_N "3", lcd_preheat_abs2);
|
MENU_ITEM(function, MSG_PREHEAT_ABS_N MSG_H3, lcd_preheat_abs2);
|
||||||
#endif //3 extruder preheat
|
#endif //3 extruder preheat
|
||||||
#if TEMP_SENSOR_3 != 0 //4 extruder preheat
|
#if TEMP_SENSOR_3 != 0 //4 extruder preheat
|
||||||
MENU_ITEM(function, MSG_PREHEAT_ABS_N "4", lcd_preheat_abs3);
|
MENU_ITEM(function, MSG_PREHEAT_ABS_N MSG_H4, lcd_preheat_abs3);
|
||||||
#endif //4 extruder preheat
|
#endif //4 extruder preheat
|
||||||
#if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 //all extruder preheat
|
#if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 //all extruder preheat
|
||||||
MENU_ITEM(function, MSG_PREHEAT_ABS_ALL, lcd_preheat_abs0123);
|
MENU_ITEM(function, MSG_PREHEAT_ABS_ALL, lcd_preheat_abs0123);
|
||||||
#endif //all extruder preheat
|
#endif //all extruder preheat
|
||||||
|
#if TEMP_SENSOR_BED != 0
|
||||||
#if TEMP_SENSOR_BED != 0
|
MENU_ITEM(function, MSG_PREHEAT_ABS_BEDONLY, lcd_preheat_abs_bedonly);
|
||||||
MENU_ITEM(function, MSG_PREHEAT_ABS_BEDONLY, lcd_preheat_abs_bedonly);
|
#endif
|
||||||
#endif
|
|
||||||
END_MENU();
|
END_MENU();
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_cooldown()
|
void lcd_cooldown() {
|
||||||
{
|
setTargetHotend0(0);
|
||||||
setTargetHotend0(0);
|
setTargetHotend1(0);
|
||||||
setTargetHotend1(0);
|
setTargetHotend2(0);
|
||||||
setTargetHotend2(0);
|
setTargetHotend3(0);
|
||||||
setTargetHotend3(0);
|
setTargetBed(0);
|
||||||
setTargetBed(0);
|
fanSpeed = 0;
|
||||||
fanSpeed = 0;
|
lcd_return_to_status();
|
||||||
lcd_return_to_status();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lcd_prepare_menu()
|
static void lcd_prepare_menu() {
|
||||||
{
|
START_MENU();
|
||||||
START_MENU();
|
MENU_ITEM(back, MSG_MAIN, lcd_main_menu);
|
||||||
MENU_ITEM(back, MSG_MAIN, lcd_main_menu);
|
#ifdef SDSUPPORT
|
||||||
#ifdef SDSUPPORT
|
|
||||||
#ifdef MENU_ADDAUTOSTART
|
#ifdef MENU_ADDAUTOSTART
|
||||||
MENU_ITEM(function, MSG_AUTOSTART, lcd_autostart_sd);
|
MENU_ITEM(function, MSG_AUTOSTART, lcd_autostart_sd);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
MENU_ITEM(gcode, MSG_DISABLE_STEPPERS, PSTR("M84"));
|
|
||||||
MENU_ITEM(gcode, MSG_AUTO_HOME, PSTR("G28"));
|
|
||||||
MENU_ITEM(function, MSG_SET_HOME_OFFSETS, lcd_set_home_offsets);
|
|
||||||
//MENU_ITEM(gcode, MSG_SET_ORIGIN, PSTR("G92 X0 Y0 Z0"));
|
|
||||||
#if TEMP_SENSOR_0 != 0
|
|
||||||
#if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_BED != 0
|
|
||||||
MENU_ITEM(submenu, MSG_PREHEAT_PLA, lcd_preheat_pla_menu);
|
|
||||||
MENU_ITEM(submenu, MSG_PREHEAT_ABS, lcd_preheat_abs_menu);
|
|
||||||
#else
|
|
||||||
MENU_ITEM(function, MSG_PREHEAT_PLA, lcd_preheat_pla0);
|
|
||||||
MENU_ITEM(function, MSG_PREHEAT_ABS, lcd_preheat_abs0);
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
MENU_ITEM(gcode, MSG_DISABLE_STEPPERS, PSTR("M84"));
|
||||||
MENU_ITEM(function, MSG_COOLDOWN, lcd_cooldown);
|
MENU_ITEM(gcode, MSG_AUTO_HOME, PSTR("G28"));
|
||||||
#if PS_ON_PIN > -1
|
MENU_ITEM(function, MSG_SET_HOME_OFFSETS, lcd_set_home_offsets);
|
||||||
if (powersupply)
|
//MENU_ITEM(gcode, MSG_SET_ORIGIN, PSTR("G92 X0 Y0 Z0"));
|
||||||
{
|
#if TEMP_SENSOR_0 != 0
|
||||||
MENU_ITEM(gcode, MSG_SWITCH_PS_OFF, PSTR("M81"));
|
#if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_BED != 0
|
||||||
}else{
|
MENU_ITEM(submenu, MSG_PREHEAT_PLA, lcd_preheat_pla_menu);
|
||||||
MENU_ITEM(gcode, MSG_SWITCH_PS_ON, PSTR("M80"));
|
MENU_ITEM(submenu, MSG_PREHEAT_ABS, lcd_preheat_abs_menu);
|
||||||
|
#else
|
||||||
|
MENU_ITEM(function, MSG_PREHEAT_PLA, lcd_preheat_pla0);
|
||||||
|
MENU_ITEM(function, MSG_PREHEAT_ABS, lcd_preheat_abs0);
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
MENU_ITEM(function, MSG_COOLDOWN, lcd_cooldown);
|
||||||
|
#if defined(POWER_SUPPLY) && POWER_SUPPLY > 0 && defined(PS_ON_PIN) && PS_ON_PIN > -1
|
||||||
|
if (powersupply) {
|
||||||
|
MENU_ITEM(gcode, MSG_SWITCH_PS_OFF, PSTR("M81"));
|
||||||
}
|
}
|
||||||
#endif
|
else {
|
||||||
MENU_ITEM(submenu, MSG_MOVE_AXIS, lcd_move_menu);
|
MENU_ITEM(gcode, MSG_SWITCH_PS_ON, PSTR("M80"));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
MENU_ITEM(submenu, MSG_MOVE_AXIS, lcd_move_menu);
|
||||||
|
|
||||||
// JFR for RMud delta printer
|
END_MENU();
|
||||||
MENU_ITEM(gcode, "Calibrate bed", PSTR("M702\nG28\nG1 X-77.94 Y-45 Z36 F8000\nG4 S3\nM701 P0\nG1 X77.94 Y-45 Z36\nG4 S3\nM701 P1\nG1 X0 Y90 Z36\nG4 S3\nM701 P2\nM700\nG1 X0 Y0 Z100 F8000"));
|
|
||||||
MENU_ITEM(gcode, "Check level", PSTR("G28\nG1 X0 Y0 Z1 F4000\nG1 X-77.94 Y-45 Z1\nG1 X77.94 Y-45\nG1 X0 Y90\nG1 X-77.94 Y-45\nG4 S2\nG1 X-77.94 Y-45 Z0.3 F2000\nG1 X-77.94 Y-45\nG1 X77.94 Y-45\nG1 X0 Y90\nG1 X-77.94 Y-45\nG1 X0 Y0 Z0"));
|
|
||||||
MENU_ITEM(gcode, "Retract filament", PSTR("M302\nM82\nG92 E0\nG1 F4000 E-800"));
|
|
||||||
MENU_ITEM(gcode, "Insert filament", PSTR("M302\nM82\nG92 E0\nG1 F4000 E60"));
|
|
||||||
MENU_ITEM(gcode, "Finalize filament", PSTR("G1 F4000 E790"));
|
|
||||||
END_MENU();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef DELTA_CALIBRATION_MENU
|
#ifdef DELTA_CALIBRATION_MENU
|
||||||
|
@ -755,89 +658,77 @@ static void lcd_move_x() { _lcd_move(PSTR("X"), X_AXIS, X_MIN_POS, X_MAX_POS); }
|
||||||
static void lcd_move_y() { _lcd_move(PSTR("Y"), Y_AXIS, Y_MIN_POS, Y_MAX_POS); }
|
static void lcd_move_y() { _lcd_move(PSTR("Y"), Y_AXIS, Y_MIN_POS, Y_MAX_POS); }
|
||||||
static void lcd_move_z() { _lcd_move(PSTR("Z"), Z_AXIS, Z_MIN_POS, Z_MAX_POS); }
|
static void lcd_move_z() { _lcd_move(PSTR("Z"), Z_AXIS, Z_MIN_POS, Z_MAX_POS); }
|
||||||
|
|
||||||
static void lcd_move_e()
|
static void lcd_move_e() {
|
||||||
{
|
if (encoderPosition != 0) {
|
||||||
if (encoderPosition != 0)
|
current_position[E_AXIS] += float((int)encoderPosition) * move_menu_scale;
|
||||||
{
|
encoderPosition = 0;
|
||||||
current_position[E_AXIS] += float((int)encoderPosition) * move_menu_scale;
|
#ifdef DELTA
|
||||||
encoderPosition = 0;
|
calculate_delta(current_position);
|
||||||
#ifdef DELTA
|
plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], current_position[E_AXIS], manual_feedrate[E_AXIS]/60, active_extruder);
|
||||||
calculate_delta(current_position);
|
#else
|
||||||
plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], current_position[E_AXIS], manual_feedrate[E_AXIS]/60, active_extruder);
|
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], manual_feedrate[E_AXIS]/60, active_extruder);
|
||||||
#else
|
#endif
|
||||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], manual_feedrate[E_AXIS]/60, active_extruder);
|
lcdDrawUpdate = 1;
|
||||||
#endif
|
}
|
||||||
lcdDrawUpdate = 1;
|
if (lcdDrawUpdate) lcd_implementation_drawedit(PSTR("Extruder"), ftostr31(current_position[E_AXIS]));
|
||||||
}
|
if (LCD_CLICKED) lcd_goto_menu(lcd_move_menu_axis);
|
||||||
if (lcdDrawUpdate)
|
|
||||||
{
|
|
||||||
lcd_implementation_drawedit(PSTR("Extruder"), ftostr31(current_position[E_AXIS]));
|
|
||||||
}
|
|
||||||
if (LCD_CLICKED) lcd_goto_menu(lcd_move_menu_axis);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lcd_move_menu_axis()
|
static void lcd_move_menu_axis() {
|
||||||
{
|
START_MENU();
|
||||||
START_MENU();
|
MENU_ITEM(back, MSG_MOVE_AXIS, lcd_move_menu);
|
||||||
MENU_ITEM(back, MSG_MOVE_AXIS, lcd_move_menu);
|
MENU_ITEM(submenu, MSG_MOVE_X, lcd_move_x);
|
||||||
MENU_ITEM(submenu, MSG_MOVE_X, lcd_move_x);
|
MENU_ITEM(submenu, MSG_MOVE_Y, lcd_move_y);
|
||||||
MENU_ITEM(submenu, MSG_MOVE_Y, lcd_move_y);
|
if (move_menu_scale < 10.0) {
|
||||||
if (move_menu_scale < 10.0)
|
MENU_ITEM(submenu, MSG_MOVE_Z, lcd_move_z);
|
||||||
{
|
MENU_ITEM(submenu, MSG_MOVE_E, lcd_move_e);
|
||||||
MENU_ITEM(submenu, MSG_MOVE_Z, lcd_move_z);
|
}
|
||||||
MENU_ITEM(submenu, MSG_MOVE_E, lcd_move_e);
|
END_MENU();
|
||||||
}
|
|
||||||
END_MENU();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lcd_move_menu_10mm()
|
static void lcd_move_menu_10mm() {
|
||||||
{
|
move_menu_scale = 10.0;
|
||||||
move_menu_scale = 10.0;
|
lcd_move_menu_axis();
|
||||||
lcd_move_menu_axis();
|
|
||||||
}
|
}
|
||||||
static void lcd_move_menu_1mm()
|
static void lcd_move_menu_1mm() {
|
||||||
{
|
move_menu_scale = 1.0;
|
||||||
move_menu_scale = 1.0;
|
lcd_move_menu_axis();
|
||||||
lcd_move_menu_axis();
|
|
||||||
}
|
}
|
||||||
static void lcd_move_menu_01mm()
|
static void lcd_move_menu_01mm() {
|
||||||
{
|
move_menu_scale = 0.1;
|
||||||
move_menu_scale = 0.1;
|
lcd_move_menu_axis();
|
||||||
lcd_move_menu_axis();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lcd_move_menu()
|
static void lcd_move_menu() {
|
||||||
{
|
START_MENU();
|
||||||
START_MENU();
|
MENU_ITEM(back, MSG_PREPARE, lcd_prepare_menu);
|
||||||
MENU_ITEM(back, MSG_PREPARE, lcd_prepare_menu);
|
MENU_ITEM(submenu, MSG_MOVE_10MM, lcd_move_menu_10mm);
|
||||||
MENU_ITEM(submenu, MSG_MOVE_10MM, lcd_move_menu_10mm);
|
MENU_ITEM(submenu, MSG_MOVE_1MM, lcd_move_menu_1mm);
|
||||||
MENU_ITEM(submenu, MSG_MOVE_1MM, lcd_move_menu_1mm);
|
MENU_ITEM(submenu, MSG_MOVE_01MM, lcd_move_menu_01mm);
|
||||||
MENU_ITEM(submenu, MSG_MOVE_01MM, lcd_move_menu_01mm);
|
//TODO:X,Y,Z,E
|
||||||
//TODO:X,Y,Z,E
|
END_MENU();
|
||||||
END_MENU();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lcd_control_menu()
|
static void lcd_control_menu() {
|
||||||
{
|
START_MENU();
|
||||||
START_MENU();
|
MENU_ITEM(back, MSG_MAIN, lcd_main_menu);
|
||||||
MENU_ITEM(back, MSG_MAIN, lcd_main_menu);
|
MENU_ITEM(submenu, MSG_TEMPERATURE, lcd_control_temperature_menu);
|
||||||
MENU_ITEM(submenu, MSG_TEMPERATURE, lcd_control_temperature_menu);
|
MENU_ITEM(submenu, MSG_MOTION, lcd_control_motion_menu);
|
||||||
MENU_ITEM(submenu, MSG_MOTION, lcd_control_motion_menu);
|
MENU_ITEM(submenu, MSG_VOLUMETRIC, lcd_control_volumetric_menu);
|
||||||
MENU_ITEM(submenu, MSG_VOLUMETRIC, lcd_control_volumetric_menu);
|
|
||||||
|
|
||||||
#ifdef DOGLCD
|
#ifdef DOGLCD
|
||||||
// MENU_ITEM_EDIT(int3, MSG_CONTRAST, &lcd_contrast, 0, 63);
|
//MENU_ITEM_EDIT(int3, MSG_CONTRAST, &lcd_contrast, 0, 63);
|
||||||
MENU_ITEM(submenu, MSG_CONTRAST, lcd_set_contrast);
|
MENU_ITEM(submenu, MSG_CONTRAST, lcd_set_contrast);
|
||||||
#endif
|
#endif
|
||||||
#ifdef FWRETRACT
|
#ifdef FWRETRACT
|
||||||
MENU_ITEM(submenu, MSG_RETRACT, lcd_control_retract_menu);
|
MENU_ITEM(submenu, MSG_RETRACT, lcd_control_retract_menu);
|
||||||
#endif
|
#endif
|
||||||
#ifdef EEPROM_SETTINGS
|
#ifdef EEPROM_SETTINGS
|
||||||
MENU_ITEM(function, MSG_STORE_EPROM, Config_StoreSettings);
|
MENU_ITEM(function, MSG_STORE_EPROM, Config_StoreSettings);
|
||||||
MENU_ITEM(function, MSG_LOAD_EPROM, Config_RetrieveSettings);
|
MENU_ITEM(function, MSG_LOAD_EPROM, Config_RetrieveSettings);
|
||||||
#endif
|
#endif
|
||||||
MENU_ITEM(function, MSG_RESTORE_FAILSAFE, Config_ResetDefault);
|
MENU_ITEM(function, MSG_RESTORE_FAILSAFE, Config_ResetDefault);
|
||||||
END_MENU();
|
END_MENU();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef PIDTEMP
|
#ifdef PIDTEMP
|
||||||
|
@ -871,8 +762,7 @@ static void lcd_control_menu()
|
||||||
|
|
||||||
#endif //PIDTEMP
|
#endif //PIDTEMP
|
||||||
|
|
||||||
static void lcd_control_temperature_menu()
|
static void lcd_control_temperature_menu() {
|
||||||
{
|
|
||||||
START_MENU();
|
START_MENU();
|
||||||
MENU_ITEM(back, MSG_CONTROL, lcd_control_menu);
|
MENU_ITEM(back, MSG_CONTROL, lcd_control_menu);
|
||||||
#if TEMP_SENSOR_0 != 0
|
#if TEMP_SENSOR_0 != 0
|
||||||
|
@ -880,19 +770,19 @@ static void lcd_control_temperature_menu()
|
||||||
#endif
|
#endif
|
||||||
#if EXTRUDERS > 1
|
#if EXTRUDERS > 1
|
||||||
#if TEMP_SENSOR_1 != 0
|
#if TEMP_SENSOR_1 != 0
|
||||||
MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE " 2", &target_temperature[1], 0, HEATER_1_MAXTEMP - 15);
|
MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE MSG_N2, &target_temperature[1], 0, HEATER_1_MAXTEMP - 15);
|
||||||
#endif
|
#endif
|
||||||
#if EXTRUDERS > 2
|
#if EXTRUDERS > 2
|
||||||
#if TEMP_SENSOR_2 != 0
|
#if TEMP_SENSOR_2 != 0
|
||||||
MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE " 3", &target_temperature[2], 0, HEATER_2_MAXTEMP - 15);
|
MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE MSG_N3, &target_temperature[2], 0, HEATER_2_MAXTEMP - 15);
|
||||||
#endif
|
#endif
|
||||||
#if EXTRUDERS > 3
|
#if EXTRUDERS > 3
|
||||||
#if TEMP_SENSOR_3 != 0
|
#if TEMP_SENSOR_3 != 0
|
||||||
MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE " 4", &target_temperature[3], 0, HEATER_3_MAXTEMP - 15);
|
MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE MSG_N4, &target_temperature[3], 0, HEATER_3_MAXTEMP - 15);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif // EXTRUDERS > 3
|
||||||
#endif
|
#endif // EXTRUDERS > 2
|
||||||
#endif
|
#endif // EXTRUDERS > 1
|
||||||
#if TEMP_SENSOR_BED != 0
|
#if TEMP_SENSOR_BED != 0
|
||||||
MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_BED, &target_temperature_bed, 0, BED_MAXTEMP - 15);
|
MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_BED, &target_temperature_bed, 0, BED_MAXTEMP - 15);
|
||||||
#endif
|
#endif
|
||||||
|
@ -919,36 +809,36 @@ static void lcd_control_temperature_menu()
|
||||||
// set up temp variables - undo the default scaling
|
// set up temp variables - undo the default scaling
|
||||||
raw_Ki = unscalePID_i(PID_PARAM(Ki,1));
|
raw_Ki = unscalePID_i(PID_PARAM(Ki,1));
|
||||||
raw_Kd = unscalePID_d(PID_PARAM(Kd,1));
|
raw_Kd = unscalePID_d(PID_PARAM(Kd,1));
|
||||||
MENU_ITEM_EDIT(float52, MSG_PID_P " E2", &PID_PARAM(Kp,1), 1, 9990);
|
MENU_ITEM_EDIT(float52, MSG_PID_P MSG_E2, &PID_PARAM(Kp,1), 1, 9990);
|
||||||
// i is typically a small value so allows values below 1
|
// i is typically a small value so allows values below 1
|
||||||
MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I " E2", &raw_Ki, 0.01, 9990, copy_and_scalePID_i_E2);
|
MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I MSG_E2, &raw_Ki, 0.01, 9990, copy_and_scalePID_i_E2);
|
||||||
MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D " E2", &raw_Kd, 1, 9990, copy_and_scalePID_d_E2);
|
MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D MSG_E2, &raw_Kd, 1, 9990, copy_and_scalePID_d_E2);
|
||||||
#ifdef PID_ADD_EXTRUSION_RATE
|
#ifdef PID_ADD_EXTRUSION_RATE
|
||||||
MENU_ITEM_EDIT(float3, MSG_PID_C " E2", &PID_PARAM(Kc,1), 1, 9990);
|
MENU_ITEM_EDIT(float3, MSG_PID_C MSG_E2, &PID_PARAM(Kc,1), 1, 9990);
|
||||||
#endif//PID_ADD_EXTRUSION_RATE
|
#endif//PID_ADD_EXTRUSION_RATE
|
||||||
|
|
||||||
#if EXTRUDERS > 2
|
#if EXTRUDERS > 2
|
||||||
// set up temp variables - undo the default scaling
|
// set up temp variables - undo the default scaling
|
||||||
raw_Ki = unscalePID_i(PID_PARAM(Ki,2));
|
raw_Ki = unscalePID_i(PID_PARAM(Ki,2));
|
||||||
raw_Kd = unscalePID_d(PID_PARAM(Kd,2));
|
raw_Kd = unscalePID_d(PID_PARAM(Kd,2));
|
||||||
MENU_ITEM_EDIT(float52, MSG_PID_P " E3", &PID_PARAM(Kp,2), 1, 9990);
|
MENU_ITEM_EDIT(float52, MSG_PID_P MSG_E3, &PID_PARAM(Kp,2), 1, 9990);
|
||||||
// i is typically a small value so allows values below 1
|
// i is typically a small value so allows values below 1
|
||||||
MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I " E3", &raw_Ki, 0.01, 9990, copy_and_scalePID_i_E3);
|
MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I MSG_E3, &raw_Ki, 0.01, 9990, copy_and_scalePID_i_E3);
|
||||||
MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D " E3", &raw_Kd, 1, 9990, copy_and_scalePID_d_E3);
|
MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D MSG_E3, &raw_Kd, 1, 9990, copy_and_scalePID_d_E3);
|
||||||
#ifdef PID_ADD_EXTRUSION_RATE
|
#ifdef PID_ADD_EXTRUSION_RATE
|
||||||
MENU_ITEM_EDIT(float3, MSG_PID_C " E3", &PID_PARAM(Kc,2), 1, 9990);
|
MENU_ITEM_EDIT(float3, MSG_PID_C MSG_E3, &PID_PARAM(Kc,2), 1, 9990);
|
||||||
#endif//PID_ADD_EXTRUSION_RATE
|
#endif//PID_ADD_EXTRUSION_RATE
|
||||||
|
|
||||||
#if EXTRUDERS > 3
|
#if EXTRUDERS > 3
|
||||||
// set up temp variables - undo the default scaling
|
// set up temp variables - undo the default scaling
|
||||||
raw_Ki = unscalePID_i(PID_PARAM(Ki,3));
|
raw_Ki = unscalePID_i(PID_PARAM(Ki,3));
|
||||||
raw_Kd = unscalePID_d(PID_PARAM(Kd,3));
|
raw_Kd = unscalePID_d(PID_PARAM(Kd,3));
|
||||||
MENU_ITEM_EDIT(float52, MSG_PID_P " E4", &PID_PARAM(Kp,3), 1, 9990);
|
MENU_ITEM_EDIT(float52, MSG_PID_P MSG_E4, &PID_PARAM(Kp,3), 1, 9990);
|
||||||
// i is typically a small value so allows values below 1
|
// i is typically a small value so allows values below 1
|
||||||
MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I " E4", &raw_Ki, 0.01, 9990, copy_and_scalePID_i_E4);
|
MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I MSG_E4, &raw_Ki, 0.01, 9990, copy_and_scalePID_i_E4);
|
||||||
MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D " E4", &raw_Kd, 1, 9990, copy_and_scalePID_d_E4);
|
MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D MSG_E4, &raw_Kd, 1, 9990, copy_and_scalePID_d_E4);
|
||||||
#ifdef PID_ADD_EXTRUSION_RATE
|
#ifdef PID_ADD_EXTRUSION_RATE
|
||||||
MENU_ITEM_EDIT(float3, MSG_PID_C " E4", &PID_PARAM(Kc,3), 1, 9990);
|
MENU_ITEM_EDIT(float3, MSG_PID_C MSG_E4, &PID_PARAM(Kc,3), 1, 9990);
|
||||||
#endif//PID_ADD_EXTRUSION_RATE
|
#endif//PID_ADD_EXTRUSION_RATE
|
||||||
#endif//EXTRUDERS > 3
|
#endif//EXTRUDERS > 3
|
||||||
#endif//EXTRUDERS > 2
|
#endif//EXTRUDERS > 2
|
||||||
|
@ -960,84 +850,80 @@ static void lcd_control_temperature_menu()
|
||||||
END_MENU();
|
END_MENU();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lcd_control_temperature_preheat_pla_settings_menu()
|
static void lcd_control_temperature_preheat_pla_settings_menu() {
|
||||||
{
|
START_MENU();
|
||||||
START_MENU();
|
MENU_ITEM(back, MSG_TEMPERATURE, lcd_control_temperature_menu);
|
||||||
MENU_ITEM(back, MSG_TEMPERATURE, lcd_control_temperature_menu);
|
MENU_ITEM_EDIT(int3, MSG_FAN_SPEED, &plaPreheatFanSpeed, 0, 255);
|
||||||
MENU_ITEM_EDIT(int3, MSG_FAN_SPEED, &plaPreheatFanSpeed, 0, 255);
|
#if TEMP_SENSOR_0 != 0
|
||||||
#if TEMP_SENSOR_0 != 0
|
|
||||||
MENU_ITEM_EDIT(int3, MSG_NOZZLE, &plaPreheatHotendTemp, 0, HEATER_0_MAXTEMP - 15);
|
MENU_ITEM_EDIT(int3, MSG_NOZZLE, &plaPreheatHotendTemp, 0, HEATER_0_MAXTEMP - 15);
|
||||||
#endif
|
#endif
|
||||||
#if TEMP_SENSOR_BED != 0
|
#if TEMP_SENSOR_BED != 0
|
||||||
MENU_ITEM_EDIT(int3, MSG_BED, &plaPreheatHPBTemp, 0, BED_MAXTEMP - 15);
|
MENU_ITEM_EDIT(int3, MSG_BED, &plaPreheatHPBTemp, 0, BED_MAXTEMP - 15);
|
||||||
#endif
|
#endif
|
||||||
#ifdef EEPROM_SETTINGS
|
#ifdef EEPROM_SETTINGS
|
||||||
MENU_ITEM(function, MSG_STORE_EPROM, Config_StoreSettings);
|
MENU_ITEM(function, MSG_STORE_EPROM, Config_StoreSettings);
|
||||||
#endif
|
#endif
|
||||||
END_MENU();
|
END_MENU();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lcd_control_temperature_preheat_abs_settings_menu()
|
static void lcd_control_temperature_preheat_abs_settings_menu() {
|
||||||
{
|
START_MENU();
|
||||||
START_MENU();
|
MENU_ITEM(back, MSG_TEMPERATURE, lcd_control_temperature_menu);
|
||||||
MENU_ITEM(back, MSG_TEMPERATURE, lcd_control_temperature_menu);
|
MENU_ITEM_EDIT(int3, MSG_FAN_SPEED, &absPreheatFanSpeed, 0, 255);
|
||||||
MENU_ITEM_EDIT(int3, MSG_FAN_SPEED, &absPreheatFanSpeed, 0, 255);
|
#if TEMP_SENSOR_0 != 0
|
||||||
#if TEMP_SENSOR_0 != 0
|
|
||||||
MENU_ITEM_EDIT(int3, MSG_NOZZLE, &absPreheatHotendTemp, 0, HEATER_0_MAXTEMP - 15);
|
MENU_ITEM_EDIT(int3, MSG_NOZZLE, &absPreheatHotendTemp, 0, HEATER_0_MAXTEMP - 15);
|
||||||
#endif
|
#endif
|
||||||
#if TEMP_SENSOR_BED != 0
|
#if TEMP_SENSOR_BED != 0
|
||||||
MENU_ITEM_EDIT(int3, MSG_BED, &absPreheatHPBTemp, 0, BED_MAXTEMP - 15);
|
MENU_ITEM_EDIT(int3, MSG_BED, &absPreheatHPBTemp, 0, BED_MAXTEMP - 15);
|
||||||
#endif
|
#endif
|
||||||
#ifdef EEPROM_SETTINGS
|
#ifdef EEPROM_SETTINGS
|
||||||
MENU_ITEM(function, MSG_STORE_EPROM, Config_StoreSettings);
|
MENU_ITEM(function, MSG_STORE_EPROM, Config_StoreSettings);
|
||||||
#endif
|
#endif
|
||||||
END_MENU();
|
END_MENU();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lcd_control_motion_menu()
|
static void lcd_control_motion_menu() {
|
||||||
{
|
START_MENU();
|
||||||
START_MENU();
|
MENU_ITEM(back, MSG_CONTROL, lcd_control_menu);
|
||||||
MENU_ITEM(back, MSG_CONTROL, lcd_control_menu);
|
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
|
||||||
MENU_ITEM_EDIT(float32, MSG_ZPROBE_ZOFFSET, &zprobe_zoffset, 0.5, 50);
|
MENU_ITEM_EDIT(float32, MSG_ZPROBE_ZOFFSET, &zprobe_zoffset, 0.5, 50);
|
||||||
#endif
|
#endif
|
||||||
MENU_ITEM_EDIT(float5, MSG_ACC, &acceleration, 500, 99000);
|
MENU_ITEM_EDIT(float5, MSG_ACC, &acceleration, 500, 99000);
|
||||||
MENU_ITEM_EDIT(float3, MSG_VXY_JERK, &max_xy_jerk, 1, 990);
|
MENU_ITEM_EDIT(float3, MSG_VXY_JERK, &max_xy_jerk, 1, 990);
|
||||||
MENU_ITEM_EDIT(float52, MSG_VZ_JERK, &max_z_jerk, 0.1, 990);
|
MENU_ITEM_EDIT(float52, MSG_VZ_JERK, &max_z_jerk, 0.1, 990);
|
||||||
MENU_ITEM_EDIT(float3, MSG_VE_JERK, &max_e_jerk, 1, 990);
|
MENU_ITEM_EDIT(float3, MSG_VE_JERK, &max_e_jerk, 1, 990);
|
||||||
MENU_ITEM_EDIT(float3, MSG_VMAX MSG_X, &max_feedrate[X_AXIS], 1, 999);
|
MENU_ITEM_EDIT(float3, MSG_VMAX MSG_X, &max_feedrate[X_AXIS], 1, 999);
|
||||||
MENU_ITEM_EDIT(float3, MSG_VMAX MSG_Y, &max_feedrate[Y_AXIS], 1, 999);
|
MENU_ITEM_EDIT(float3, MSG_VMAX MSG_Y, &max_feedrate[Y_AXIS], 1, 999);
|
||||||
MENU_ITEM_EDIT(float3, MSG_VMAX MSG_Z, &max_feedrate[Z_AXIS], 1, 999);
|
MENU_ITEM_EDIT(float3, MSG_VMAX MSG_Z, &max_feedrate[Z_AXIS], 1, 999);
|
||||||
MENU_ITEM_EDIT(float3, MSG_VMAX MSG_E, &max_feedrate[E_AXIS], 1, 999);
|
MENU_ITEM_EDIT(float3, MSG_VMAX MSG_E, &max_feedrate[E_AXIS], 1, 999);
|
||||||
MENU_ITEM_EDIT(float3, MSG_VMIN, &minimumfeedrate, 0, 999);
|
MENU_ITEM_EDIT(float3, MSG_VMIN, &minimumfeedrate, 0, 999);
|
||||||
MENU_ITEM_EDIT(float3, MSG_VTRAV_MIN, &mintravelfeedrate, 0, 999);
|
MENU_ITEM_EDIT(float3, MSG_VTRAV_MIN, &mintravelfeedrate, 0, 999);
|
||||||
MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_X, &max_acceleration_units_per_sq_second[X_AXIS], 100, 99000, reset_acceleration_rates);
|
MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_X, &max_acceleration_units_per_sq_second[X_AXIS], 100, 99000, reset_acceleration_rates);
|
||||||
MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_Y, &max_acceleration_units_per_sq_second[Y_AXIS], 100, 99000, reset_acceleration_rates);
|
MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_Y, &max_acceleration_units_per_sq_second[Y_AXIS], 100, 99000, reset_acceleration_rates);
|
||||||
MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_Z, &max_acceleration_units_per_sq_second[Z_AXIS], 100, 99000, reset_acceleration_rates);
|
MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_Z, &max_acceleration_units_per_sq_second[Z_AXIS], 100, 99000, reset_acceleration_rates);
|
||||||
MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_E, &max_acceleration_units_per_sq_second[E_AXIS], 100, 99000, reset_acceleration_rates);
|
MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_E, &max_acceleration_units_per_sq_second[E_AXIS], 100, 99000, reset_acceleration_rates);
|
||||||
MENU_ITEM_EDIT(float5, MSG_A_RETRACT, &retract_acceleration, 100, 99000);
|
MENU_ITEM_EDIT(float5, MSG_A_RETRACT, &retract_acceleration, 100, 99000);
|
||||||
MENU_ITEM_EDIT(float52, MSG_XSTEPS, &axis_steps_per_unit[X_AXIS], 5, 9999);
|
MENU_ITEM_EDIT(float52, MSG_XSTEPS, &axis_steps_per_unit[X_AXIS], 5, 9999);
|
||||||
MENU_ITEM_EDIT(float52, MSG_YSTEPS, &axis_steps_per_unit[Y_AXIS], 5, 9999);
|
MENU_ITEM_EDIT(float52, MSG_YSTEPS, &axis_steps_per_unit[Y_AXIS], 5, 9999);
|
||||||
MENU_ITEM_EDIT(float51, MSG_ZSTEPS, &axis_steps_per_unit[Z_AXIS], 5, 9999);
|
MENU_ITEM_EDIT(float51, MSG_ZSTEPS, &axis_steps_per_unit[Z_AXIS], 5, 9999);
|
||||||
MENU_ITEM_EDIT(float51, MSG_ESTEPS, &axis_steps_per_unit[E_AXIS], 5, 9999);
|
MENU_ITEM_EDIT(float51, MSG_ESTEPS, &axis_steps_per_unit[E_AXIS], 5, 9999);
|
||||||
#ifdef ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED
|
#ifdef ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED
|
||||||
MENU_ITEM_EDIT(bool, MSG_ENDSTOP_ABORT, &abort_on_endstop_hit);
|
MENU_ITEM_EDIT(bool, MSG_ENDSTOP_ABORT, &abort_on_endstop_hit);
|
||||||
#endif
|
#endif
|
||||||
#ifdef SCARA
|
#ifdef SCARA
|
||||||
MENU_ITEM_EDIT(float74, MSG_XSCALE, &axis_scaling[X_AXIS],0.5,2);
|
MENU_ITEM_EDIT(float74, MSG_XSCALE, &axis_scaling[X_AXIS],0.5,2);
|
||||||
MENU_ITEM_EDIT(float74, MSG_YSCALE, &axis_scaling[Y_AXIS],0.5,2);
|
MENU_ITEM_EDIT(float74, MSG_YSCALE, &axis_scaling[Y_AXIS],0.5,2);
|
||||||
#endif
|
#endif
|
||||||
END_MENU();
|
END_MENU();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lcd_control_volumetric_menu()
|
static void lcd_control_volumetric_menu() {
|
||||||
{
|
START_MENU();
|
||||||
START_MENU();
|
MENU_ITEM(back, MSG_CONTROL, lcd_control_menu);
|
||||||
MENU_ITEM(back, MSG_CONTROL, lcd_control_menu);
|
|
||||||
|
|
||||||
MENU_ITEM_EDIT_CALLBACK(bool, MSG_VOLUMETRIC_ENABLED, &volumetric_enabled, calculate_volumetric_multipliers);
|
MENU_ITEM_EDIT_CALLBACK(bool, MSG_VOLUMETRIC_ENABLED, &volumetric_enabled, calculate_volumetric_multipliers);
|
||||||
|
|
||||||
if (volumetric_enabled) {
|
if (volumetric_enabled) {
|
||||||
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER_0, &filament_size[0], 1.5, 3.25, calculate_volumetric_multipliers);
|
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER_0, &filament_size[0], 1.5, 3.25, calculate_volumetric_multipliers);
|
||||||
#if EXTRUDERS > 1
|
#if EXTRUDERS > 1
|
||||||
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER_1, &filament_size[1], 1.5, 3.25, calculate_volumetric_multipliers);
|
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER_1, &filament_size[1], 1.5, 3.25, calculate_volumetric_multipliers);
|
||||||
|
@ -1048,149 +934,133 @@ static void lcd_control_volumetric_menu()
|
||||||
#endif //EXTRUDERS > 3
|
#endif //EXTRUDERS > 3
|
||||||
#endif //EXTRUDERS > 2
|
#endif //EXTRUDERS > 2
|
||||||
#endif //EXTRUDERS > 1
|
#endif //EXTRUDERS > 1
|
||||||
}
|
}
|
||||||
|
|
||||||
END_MENU();
|
END_MENU();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef DOGLCD
|
#ifdef DOGLCD
|
||||||
static void lcd_set_contrast()
|
|
||||||
{
|
static void lcd_set_contrast() {
|
||||||
if (encoderPosition != 0)
|
if (encoderPosition != 0) {
|
||||||
{
|
lcd_contrast -= encoderPosition;
|
||||||
lcd_contrast -= encoderPosition;
|
if (lcd_contrast < 0) lcd_contrast = 0;
|
||||||
if (lcd_contrast < 0) lcd_contrast = 0;
|
else if (lcd_contrast > 63) lcd_contrast = 63;
|
||||||
else if (lcd_contrast > 63) lcd_contrast = 63;
|
encoderPosition = 0;
|
||||||
encoderPosition = 0;
|
lcdDrawUpdate = 1;
|
||||||
lcdDrawUpdate = 1;
|
u8g.setContrast(lcd_contrast);
|
||||||
u8g.setContrast(lcd_contrast);
|
}
|
||||||
}
|
if (lcdDrawUpdate) lcd_implementation_drawedit(PSTR(MSG_CONTRAST), itostr2(lcd_contrast));
|
||||||
if (lcdDrawUpdate)
|
if (LCD_CLICKED) lcd_goto_menu(lcd_control_menu);
|
||||||
{
|
|
||||||
lcd_implementation_drawedit(PSTR(MSG_CONTRAST), itostr2(lcd_contrast));
|
|
||||||
}
|
|
||||||
if (LCD_CLICKED) lcd_goto_menu(lcd_control_menu);
|
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
#endif //DOGLCD
|
||||||
|
|
||||||
#ifdef FWRETRACT
|
#ifdef FWRETRACT
|
||||||
static void lcd_control_retract_menu()
|
|
||||||
{
|
static void lcd_control_retract_menu() {
|
||||||
START_MENU();
|
START_MENU();
|
||||||
MENU_ITEM(back, MSG_CONTROL, lcd_control_menu);
|
MENU_ITEM(back, MSG_CONTROL, lcd_control_menu);
|
||||||
MENU_ITEM_EDIT(bool, MSG_AUTORETRACT, &autoretract_enabled);
|
MENU_ITEM_EDIT(bool, MSG_AUTORETRACT, &autoretract_enabled);
|
||||||
MENU_ITEM_EDIT(float52, MSG_CONTROL_RETRACT, &retract_length, 0, 100);
|
MENU_ITEM_EDIT(float52, MSG_CONTROL_RETRACT, &retract_length, 0, 100);
|
||||||
#if EXTRUDERS > 1
|
#if EXTRUDERS > 1
|
||||||
MENU_ITEM_EDIT(float52, MSG_CONTROL_RETRACT_SWAP, &retract_length_swap, 0, 100);
|
MENU_ITEM_EDIT(float52, MSG_CONTROL_RETRACT_SWAP, &retract_length_swap, 0, 100);
|
||||||
#endif
|
#endif
|
||||||
MENU_ITEM_EDIT(float3, MSG_CONTROL_RETRACTF, &retract_feedrate, 1, 999);
|
MENU_ITEM_EDIT(float3, MSG_CONTROL_RETRACTF, &retract_feedrate, 1, 999);
|
||||||
MENU_ITEM_EDIT(float52, MSG_CONTROL_RETRACT_ZLIFT, &retract_zlift, 0, 999);
|
MENU_ITEM_EDIT(float52, MSG_CONTROL_RETRACT_ZLIFT, &retract_zlift, 0, 999);
|
||||||
MENU_ITEM_EDIT(float52, MSG_CONTROL_RETRACT_RECOVER, &retract_recover_length, 0, 100);
|
MENU_ITEM_EDIT(float52, MSG_CONTROL_RETRACT_RECOVER, &retract_recover_length, 0, 100);
|
||||||
#if EXTRUDERS > 1
|
#if EXTRUDERS > 1
|
||||||
MENU_ITEM_EDIT(float52, MSG_CONTROL_RETRACT_RECOVER_SWAP, &retract_recover_length_swap, 0, 100);
|
MENU_ITEM_EDIT(float52, MSG_CONTROL_RETRACT_RECOVER_SWAP, &retract_recover_length_swap, 0, 100);
|
||||||
#endif
|
#endif
|
||||||
MENU_ITEM_EDIT(float3, MSG_CONTROL_RETRACT_RECOVERF, &retract_recover_feedrate, 1, 999);
|
MENU_ITEM_EDIT(float3, MSG_CONTROL_RETRACT_RECOVERF, &retract_recover_feedrate, 1, 999);
|
||||||
END_MENU();
|
END_MENU();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif //FWRETRACT
|
#endif //FWRETRACT
|
||||||
|
|
||||||
#if SDCARDDETECT == -1
|
#if SDCARDDETECT == -1
|
||||||
static void lcd_sd_refresh()
|
static void lcd_sd_refresh() {
|
||||||
{
|
|
||||||
card.initsd();
|
card.initsd();
|
||||||
currentMenuViewOffset = 0;
|
currentMenuViewOffset = 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
static void lcd_sd_updir()
|
|
||||||
{
|
static void lcd_sd_updir() {
|
||||||
card.updir();
|
card.updir();
|
||||||
currentMenuViewOffset = 0;
|
currentMenuViewOffset = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_sdcard_menu()
|
void lcd_sdcard_menu() {
|
||||||
{
|
if (lcdDrawUpdate == 0 && LCD_CLICKED == 0) return; // nothing to do (so don't thrash the SD card)
|
||||||
if (lcdDrawUpdate == 0 && LCD_CLICKED == 0)
|
uint16_t fileCnt = card.getnrfilenames();
|
||||||
return; // nothing to do (so don't thrash the SD card)
|
START_MENU();
|
||||||
uint16_t fileCnt = card.getnrfilenames();
|
MENU_ITEM(back, MSG_MAIN, lcd_main_menu);
|
||||||
START_MENU();
|
card.getWorkDirName();
|
||||||
MENU_ITEM(back, MSG_MAIN, lcd_main_menu);
|
if (card.filename[0] == '/') {
|
||||||
card.getWorkDirName();
|
#if SDCARDDETECT == -1
|
||||||
if(card.filename[0]=='/')
|
MENU_ITEM(function, LCD_STR_REFRESH MSG_REFRESH, lcd_sd_refresh);
|
||||||
{
|
#endif
|
||||||
#if SDCARDDETECT == -1
|
}
|
||||||
MENU_ITEM(function, LCD_STR_REFRESH MSG_REFRESH, lcd_sd_refresh);
|
else {
|
||||||
#endif
|
MENU_ITEM(function, LCD_STR_FOLDER "..", lcd_sd_updir);
|
||||||
}else{
|
}
|
||||||
MENU_ITEM(function, LCD_STR_FOLDER "..", lcd_sd_updir);
|
|
||||||
}
|
|
||||||
|
|
||||||
for(uint16_t i=0;i<fileCnt;i++)
|
for(uint16_t i = 0; i < fileCnt; i++) {
|
||||||
{
|
if (_menuItemNr == _lineNr) {
|
||||||
if (_menuItemNr == _lineNr)
|
#ifndef SDCARD_RATHERRECENTFIRST
|
||||||
{
|
card.getfilename(i);
|
||||||
#ifndef SDCARD_RATHERRECENTFIRST
|
#else
|
||||||
card.getfilename(i);
|
card.getfilename(fileCnt-1-i);
|
||||||
#else
|
#endif
|
||||||
card.getfilename(fileCnt-1-i);
|
if (card.filenameIsDir)
|
||||||
#endif
|
MENU_ITEM(sddirectory, MSG_CARD_MENU, card.filename, card.longFilename);
|
||||||
if (card.filenameIsDir)
|
else
|
||||||
{
|
MENU_ITEM(sdfile, MSG_CARD_MENU, card.filename, card.longFilename);
|
||||||
MENU_ITEM(sddirectory, MSG_CARD_MENU, card.filename, card.longFilename);
|
|
||||||
}else{
|
|
||||||
MENU_ITEM(sdfile, MSG_CARD_MENU, card.filename, card.longFilename);
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
MENU_ITEM_DUMMY();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
END_MENU();
|
else {
|
||||||
|
MENU_ITEM_DUMMY();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
END_MENU();
|
||||||
}
|
}
|
||||||
|
|
||||||
#define menu_edit_type(_type, _name, _strFunc, scale) \
|
#define menu_edit_type(_type, _name, _strFunc, scale) \
|
||||||
void menu_edit_ ## _name () \
|
bool _menu_edit_ ## _name () { \
|
||||||
{ \
|
bool isClicked = LCD_CLICKED; \
|
||||||
if ((int32_t)encoderPosition < 0) encoderPosition = 0; \
|
if ((int32_t)encoderPosition < 0) encoderPosition = 0; \
|
||||||
if ((int32_t)encoderPosition > maxEditValue) encoderPosition = maxEditValue; \
|
if ((int32_t)encoderPosition > maxEditValue) encoderPosition = maxEditValue; \
|
||||||
if (lcdDrawUpdate) \
|
if (lcdDrawUpdate) \
|
||||||
lcd_implementation_drawedit(editLabel, _strFunc(((_type)((int32_t)encoderPosition + minEditValue)) / scale)); \
|
lcd_implementation_drawedit(editLabel, _strFunc(((_type)((int32_t)encoderPosition + minEditValue)) / scale)); \
|
||||||
if (LCD_CLICKED) \
|
if (isClicked) { \
|
||||||
{ \
|
*((_type*)editValue) = ((_type)((int32_t)encoderPosition + minEditValue)) / scale; \
|
||||||
*((_type*)editValue) = ((_type)((int32_t)encoderPosition + minEditValue)) / scale; \
|
lcd_goto_menu(prevMenu, prevEncoderPosition); \
|
||||||
lcd_goto_menu(prevMenu, prevEncoderPosition); \
|
|
||||||
} \
|
|
||||||
} \
|
} \
|
||||||
void menu_edit_callback_ ## _name () { \
|
return isClicked; \
|
||||||
menu_edit_ ## _name (); \
|
} \
|
||||||
if (LCD_CLICKED) (*callbackFunc)(); \
|
void menu_edit_ ## _name () { _menu_edit_ ## _name(); } \
|
||||||
} \
|
void menu_edit_callback_ ## _name () { if (_menu_edit_ ## _name ()) (*callbackFunc)(); } \
|
||||||
static void menu_action_setting_edit_ ## _name (const char* pstr, _type* ptr, _type minValue, _type maxValue) \
|
static void _menu_action_setting_edit_ ## _name (const char* pstr, _type* ptr, _type minValue, _type maxValue) { \
|
||||||
{ \
|
prevMenu = currentMenu; \
|
||||||
prevMenu = currentMenu; \
|
prevEncoderPosition = encoderPosition; \
|
||||||
prevEncoderPosition = encoderPosition; \
|
\
|
||||||
\
|
lcdDrawUpdate = 2; \
|
||||||
lcdDrawUpdate = 2; \
|
currentMenu = menu_edit_ ## _name; \
|
||||||
currentMenu = menu_edit_ ## _name; \
|
\
|
||||||
\
|
editLabel = pstr; \
|
||||||
editLabel = pstr; \
|
editValue = ptr; \
|
||||||
editValue = ptr; \
|
minEditValue = minValue * scale; \
|
||||||
minEditValue = minValue * scale; \
|
maxEditValue = maxValue * scale - minEditValue; \
|
||||||
maxEditValue = maxValue * scale - minEditValue; \
|
encoderPosition = (*ptr) * scale - minEditValue; \
|
||||||
encoderPosition = (*ptr) * scale - minEditValue; \
|
} \
|
||||||
}\
|
static void menu_action_setting_edit_ ## _name (const char* pstr, _type* ptr, _type minValue, _type maxValue) { \
|
||||||
static void menu_action_setting_edit_callback_ ## _name (const char* pstr, _type* ptr, _type minValue, _type maxValue, menuFunc_t callback) \
|
_menu_action_setting_edit_ ## _name(pstr, ptr, minValue, maxValue); \
|
||||||
{ \
|
currentMenu = menu_edit_ ## _name; \
|
||||||
prevMenu = currentMenu; \
|
}\
|
||||||
prevEncoderPosition = encoderPosition; \
|
static void menu_action_setting_edit_callback_ ## _name (const char* pstr, _type* ptr, _type minValue, _type maxValue, menuFunc_t callback) { \
|
||||||
\
|
_menu_action_setting_edit_ ## _name(pstr, ptr, minValue, maxValue); \
|
||||||
lcdDrawUpdate = 2; \
|
currentMenu = menu_edit_callback_ ## _name; \
|
||||||
currentMenu = menu_edit_callback_ ## _name; \
|
callbackFunc = callback; \
|
||||||
\
|
}
|
||||||
editLabel = pstr; \
|
|
||||||
editValue = ptr; \
|
|
||||||
minEditValue = minValue * scale; \
|
|
||||||
maxEditValue = maxValue * scale - minEditValue; \
|
|
||||||
encoderPosition = (*ptr) * scale - minEditValue; \
|
|
||||||
callbackFunc = callback;\
|
|
||||||
}
|
|
||||||
menu_edit_type(int, int3, itostr3, 1)
|
menu_edit_type(int, int3, itostr3, 1)
|
||||||
menu_edit_type(float, float3, ftostr3, 1)
|
menu_edit_type(float, float3, ftostr3, 1)
|
||||||
menu_edit_type(float, float32, ftostr32, 100)
|
menu_edit_type(float, float32, ftostr32, 100)
|
||||||
|
@ -1201,94 +1071,81 @@ menu_edit_type(float, float52, ftostr52, 100)
|
||||||
menu_edit_type(unsigned long, long5, ftostr5, 0.01)
|
menu_edit_type(unsigned long, long5, ftostr5, 0.01)
|
||||||
|
|
||||||
#ifdef REPRAPWORLD_KEYPAD
|
#ifdef REPRAPWORLD_KEYPAD
|
||||||
static void reprapworld_keypad_move_z_up() {
|
static void reprapworld_keypad_move_z_up() {
|
||||||
encoderPosition = 1;
|
encoderPosition = 1;
|
||||||
move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
|
move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
|
||||||
lcd_move_z();
|
lcd_move_z();
|
||||||
}
|
}
|
||||||
static void reprapworld_keypad_move_z_down() {
|
static void reprapworld_keypad_move_z_down() {
|
||||||
encoderPosition = -1;
|
encoderPosition = -1;
|
||||||
move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
|
move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
|
||||||
lcd_move_z();
|
lcd_move_z();
|
||||||
}
|
}
|
||||||
static void reprapworld_keypad_move_x_left() {
|
static void reprapworld_keypad_move_x_left() {
|
||||||
encoderPosition = -1;
|
encoderPosition = -1;
|
||||||
move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
|
move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
|
||||||
lcd_move_x();
|
lcd_move_x();
|
||||||
}
|
}
|
||||||
static void reprapworld_keypad_move_x_right() {
|
static void reprapworld_keypad_move_x_right() {
|
||||||
encoderPosition = 1;
|
encoderPosition = 1;
|
||||||
move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
|
move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
|
||||||
lcd_move_x();
|
lcd_move_x();
|
||||||
}
|
}
|
||||||
static void reprapworld_keypad_move_y_down() {
|
static void reprapworld_keypad_move_y_down() {
|
||||||
encoderPosition = 1;
|
encoderPosition = 1;
|
||||||
move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
|
move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
|
||||||
lcd_move_y();
|
|
||||||
}
|
|
||||||
static void reprapworld_keypad_move_y_up() {
|
|
||||||
encoderPosition = -1;
|
|
||||||
move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
|
|
||||||
lcd_move_y();
|
lcd_move_y();
|
||||||
}
|
}
|
||||||
static void reprapworld_keypad_move_home() {
|
static void reprapworld_keypad_move_y_up() {
|
||||||
enquecommands_P((PSTR("G28"))); // move all axis home
|
encoderPosition = -1;
|
||||||
}
|
move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
|
||||||
#endif
|
lcd_move_y();
|
||||||
|
}
|
||||||
|
static void reprapworld_keypad_move_home() {
|
||||||
|
enquecommands_P((PSTR("G28"))); // move all axis home
|
||||||
|
}
|
||||||
|
#endif //REPRAPWORLD_KEYPAD
|
||||||
|
|
||||||
/** End of menus **/
|
/** End of menus **/
|
||||||
|
|
||||||
static void lcd_quick_feedback()
|
static void lcd_quick_feedback() {
|
||||||
{
|
lcdDrawUpdate = 2;
|
||||||
lcdDrawUpdate = 2;
|
blocking_enc = millis() + 500;
|
||||||
blocking_enc = millis() + 500;
|
lcd_implementation_quick_feedback();
|
||||||
lcd_implementation_quick_feedback();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Menu action functions **/
|
/** Menu action functions **/
|
||||||
static void menu_action_back(menuFunc_t data) { lcd_goto_menu(data); }
|
static void menu_action_back(menuFunc_t data) { lcd_goto_menu(data); }
|
||||||
static void menu_action_submenu(menuFunc_t data) { lcd_goto_menu(data); }
|
static void menu_action_submenu(menuFunc_t data) { lcd_goto_menu(data); }
|
||||||
|
static void menu_action_gcode(const char* pgcode) { enquecommands_P(pgcode); }
|
||||||
static void menu_action_gcode(const char* pgcode)
|
|
||||||
{
|
|
||||||
enquecommands_P(pgcode);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void menu_action_function(menuFunc_t data) { (*data)(); }
|
static void menu_action_function(menuFunc_t data) { (*data)(); }
|
||||||
static void menu_action_sdfile(const char* filename, char* longFilename)
|
static void menu_action_sdfile(const char* filename, char* longFilename) {
|
||||||
{
|
char cmd[30];
|
||||||
char cmd[30];
|
char* c;
|
||||||
char* c;
|
sprintf_P(cmd, PSTR("M23 %s"), filename);
|
||||||
sprintf_P(cmd, PSTR("M23 %s"), filename);
|
for(c = &cmd[4]; *c; c++) *c = tolower(*c);
|
||||||
for(c = &cmd[4]; *c; c++)
|
enquecommand(cmd);
|
||||||
*c = tolower(*c);
|
enquecommands_P(PSTR("M24"));
|
||||||
enquecommand(cmd);
|
lcd_return_to_status();
|
||||||
enquecommands_P(PSTR("M24"));
|
|
||||||
lcd_return_to_status();
|
|
||||||
}
|
}
|
||||||
static void menu_action_sddirectory(const char* filename, char* longFilename)
|
static void menu_action_sddirectory(const char* filename, char* longFilename) {
|
||||||
{
|
card.chdir(filename);
|
||||||
card.chdir(filename);
|
encoderPosition = 0;
|
||||||
encoderPosition = 0;
|
|
||||||
}
|
}
|
||||||
static void menu_action_setting_edit_bool(const char* pstr, bool* ptr)
|
static void menu_action_setting_edit_bool(const char* pstr, bool* ptr) { *ptr = !(*ptr); }
|
||||||
{
|
static void menu_action_setting_edit_callback_bool(const char* pstr, bool* ptr, menuFunc_t callback) {
|
||||||
*ptr = !(*ptr);
|
menu_action_setting_edit_bool(pstr, ptr);
|
||||||
|
(*callback)();
|
||||||
}
|
}
|
||||||
static void menu_action_setting_edit_callback_bool(const char* pstr, bool* ptr, menuFunc_t callback)
|
|
||||||
{
|
#endif //ULTIPANEL
|
||||||
menu_action_setting_edit_bool(pstr, ptr);
|
|
||||||
(*callback)();
|
|
||||||
}
|
|
||||||
#endif//ULTIPANEL
|
|
||||||
|
|
||||||
/** LCD API **/
|
/** LCD API **/
|
||||||
void lcd_init()
|
void lcd_init() {
|
||||||
{
|
lcd_implementation_init();
|
||||||
lcd_implementation_init();
|
|
||||||
|
#ifdef NEWPANEL
|
||||||
|
|
||||||
#ifdef NEWPANEL
|
|
||||||
SET_INPUT(BTN_EN1);
|
SET_INPUT(BTN_EN1);
|
||||||
SET_INPUT(BTN_EN2);
|
SET_INPUT(BTN_EN2);
|
||||||
WRITE(BTN_EN1,HIGH);
|
WRITE(BTN_EN1,HIGH);
|
||||||
|
@ -1323,182 +1180,166 @@ void lcd_init()
|
||||||
#endif // SR_LCD_2W_NL
|
#endif // SR_LCD_2W_NL
|
||||||
#endif//!NEWPANEL
|
#endif//!NEWPANEL
|
||||||
|
|
||||||
#if defined (SDSUPPORT) && defined(SDCARDDETECT) && (SDCARDDETECT > 0)
|
#if defined(SDSUPPORT) && defined(SDCARDDETECT) && (SDCARDDETECT > 0)
|
||||||
pinMode(SDCARDDETECT,INPUT);
|
pinMode(SDCARDDETECT, INPUT);
|
||||||
WRITE(SDCARDDETECT, HIGH);
|
WRITE(SDCARDDETECT, HIGH);
|
||||||
lcd_oldcardstatus = IS_SD_INSERTED;
|
lcd_oldcardstatus = IS_SD_INSERTED;
|
||||||
#endif//(SDCARDDETECT > 0)
|
#endif //(SDCARDDETECT > 0)
|
||||||
#ifdef LCD_HAS_SLOW_BUTTONS
|
|
||||||
|
#ifdef LCD_HAS_SLOW_BUTTONS
|
||||||
slow_buttons = 0;
|
slow_buttons = 0;
|
||||||
#endif
|
#endif
|
||||||
lcd_buttons_update();
|
|
||||||
#ifdef ULTIPANEL
|
lcd_buttons_update();
|
||||||
|
|
||||||
|
#ifdef ULTIPANEL
|
||||||
encoderDiff = 0;
|
encoderDiff = 0;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
int lcd_strlen(char *s) {
|
int lcd_strlen(char *s) {
|
||||||
int i = 0, j = 0;
|
int i = 0, j = 0;
|
||||||
while (s[i]) {
|
while (s[i]) {
|
||||||
if ((s[i] & 0xc0) != 0x80) j++;
|
if ((s[i] & 0xc0) != 0x80) j++;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
return j;
|
return j;
|
||||||
}
|
}
|
||||||
|
|
||||||
int lcd_strlen_P(const char *s) {
|
int lcd_strlen_P(const char *s) {
|
||||||
int j = 0;
|
int j = 0;
|
||||||
while (pgm_read_byte(s)) {
|
while (pgm_read_byte(s)) {
|
||||||
if ((pgm_read_byte(s) & 0xc0) != 0x80) j++;
|
if ((pgm_read_byte(s) & 0xc0) != 0x80) j++;
|
||||||
s++;
|
s++;
|
||||||
}
|
}
|
||||||
return j;
|
return j;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void lcd_update() {
|
||||||
|
static unsigned long timeoutToStatus = 0;
|
||||||
|
|
||||||
|
#ifdef LCD_HAS_SLOW_BUTTONS
|
||||||
void lcd_update()
|
|
||||||
{
|
|
||||||
static unsigned long timeoutToStatus = 0;
|
|
||||||
|
|
||||||
#ifdef LCD_HAS_SLOW_BUTTONS
|
|
||||||
slow_buttons = lcd_implementation_read_slow_buttons(); // buttons which take too long to read in interrupt context
|
slow_buttons = lcd_implementation_read_slow_buttons(); // buttons which take too long to read in interrupt context
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
lcd_buttons_update();
|
lcd_buttons_update();
|
||||||
|
|
||||||
#if (SDCARDDETECT > 0)
|
#if (SDCARDDETECT > 0)
|
||||||
if((IS_SD_INSERTED != lcd_oldcardstatus && lcd_detected()))
|
if (IS_SD_INSERTED != lcd_oldcardstatus && lcd_detected()) {
|
||||||
{
|
lcdDrawUpdate = 2;
|
||||||
lcdDrawUpdate = 2;
|
lcd_oldcardstatus = IS_SD_INSERTED;
|
||||||
lcd_oldcardstatus = IS_SD_INSERTED;
|
lcd_implementation_init( // to maybe revive the LCD if static electricity killed it.
|
||||||
lcd_implementation_init( // to maybe revive the LCD if static electricity killed it.
|
#if defined(LCD_PROGRESS_BAR) && defined(SDSUPPORT) && !defined(DOGLCD)
|
||||||
#if defined(LCD_PROGRESS_BAR) && defined(SDSUPPORT) && !defined(DOGLCD)
|
currentMenu == lcd_status_screen
|
||||||
currentMenu == lcd_status_screen
|
#endif
|
||||||
#endif
|
);
|
||||||
);
|
|
||||||
|
|
||||||
if(lcd_oldcardstatus)
|
if (lcd_oldcardstatus) {
|
||||||
{
|
card.initsd();
|
||||||
card.initsd();
|
LCD_MESSAGEPGM(MSG_SD_INSERTED);
|
||||||
LCD_MESSAGEPGM(MSG_SD_INSERTED);
|
}
|
||||||
}
|
else {
|
||||||
else
|
card.release();
|
||||||
{
|
LCD_MESSAGEPGM(MSG_SD_REMOVED);
|
||||||
card.release();
|
}
|
||||||
LCD_MESSAGEPGM(MSG_SD_REMOVED);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#endif//CARDINSERTED
|
#endif//CARDINSERTED
|
||||||
|
|
||||||
if (lcd_next_update_millis < millis())
|
long ms = millis();
|
||||||
{
|
if (ms > lcd_next_update_millis) {
|
||||||
#ifdef ULTIPANEL
|
|
||||||
#ifdef REPRAPWORLD_KEYPAD
|
|
||||||
if (REPRAPWORLD_KEYPAD_MOVE_Z_UP) {
|
|
||||||
reprapworld_keypad_move_z_up();
|
|
||||||
}
|
|
||||||
if (REPRAPWORLD_KEYPAD_MOVE_Z_DOWN) {
|
|
||||||
reprapworld_keypad_move_z_down();
|
|
||||||
}
|
|
||||||
if (REPRAPWORLD_KEYPAD_MOVE_X_LEFT) {
|
|
||||||
reprapworld_keypad_move_x_left();
|
|
||||||
}
|
|
||||||
if (REPRAPWORLD_KEYPAD_MOVE_X_RIGHT) {
|
|
||||||
reprapworld_keypad_move_x_right();
|
|
||||||
}
|
|
||||||
if (REPRAPWORLD_KEYPAD_MOVE_Y_DOWN) {
|
|
||||||
reprapworld_keypad_move_y_down();
|
|
||||||
}
|
|
||||||
if (REPRAPWORLD_KEYPAD_MOVE_Y_UP) {
|
|
||||||
reprapworld_keypad_move_y_up();
|
|
||||||
}
|
|
||||||
if (REPRAPWORLD_KEYPAD_MOVE_HOME) {
|
|
||||||
reprapworld_keypad_move_home();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
if (abs(encoderDiff) >= ENCODER_PULSES_PER_STEP)
|
|
||||||
{
|
|
||||||
int32_t encoderMultiplier = 1;
|
|
||||||
|
|
||||||
#ifdef ENCODER_RATE_MULTIPLIER
|
#ifdef ULTIPANEL
|
||||||
|
|
||||||
if (encoderRateMultiplierEnabled) {
|
#ifdef REPRAPWORLD_KEYPAD
|
||||||
int32_t encoderMovementSteps = abs(encoderDiff) / ENCODER_PULSES_PER_STEP;
|
if (REPRAPWORLD_KEYPAD_MOVE_Z_UP) reprapworld_keypad_move_z_up();
|
||||||
|
if (REPRAPWORLD_KEYPAD_MOVE_Z_DOWN) reprapworld_keypad_move_z_down();
|
||||||
|
if (REPRAPWORLD_KEYPAD_MOVE_X_LEFT) reprapworld_keypad_move_x_left();
|
||||||
|
if (REPRAPWORLD_KEYPAD_MOVE_X_RIGHT) reprapworld_keypad_move_x_right();
|
||||||
|
if (REPRAPWORLD_KEYPAD_MOVE_Y_DOWN) reprapworld_keypad_move_y_down();
|
||||||
|
if (REPRAPWORLD_KEYPAD_MOVE_Y_UP) reprapworld_keypad_move_y_up();
|
||||||
|
if (REPRAPWORLD_KEYPAD_MOVE_HOME) reprapworld_keypad_move_home();
|
||||||
|
#endif
|
||||||
|
|
||||||
if (lastEncoderMovementMillis != 0) {
|
bool encoderPastThreshold = (abs(encoderDiff) >= ENCODER_PULSES_PER_STEP);
|
||||||
// Note that the rate is always calculated between to passes through the
|
if (encoderPastThreshold || LCD_CLICKED) {
|
||||||
// loop and that the abs of the encoderDiff value is tracked.
|
if (encoderPastThreshold) {
|
||||||
float encoderStepRate =
|
int32_t encoderMultiplier = 1;
|
||||||
(float)(encoderMovementSteps) / ((float)(millis() - lastEncoderMovementMillis)) * 1000.0;
|
|
||||||
|
|
||||||
if (encoderStepRate >= ENCODER_100X_STEPS_PER_SEC) encoderMultiplier = 100;
|
#ifdef ENCODER_RATE_MULTIPLIER
|
||||||
else if (encoderStepRate >= ENCODER_10X_STEPS_PER_SEC) encoderMultiplier = 10;
|
|
||||||
|
|
||||||
#ifdef ENCODER_RATE_MULTIPLIER_DEBUG
|
if (encoderRateMultiplierEnabled) {
|
||||||
SERIAL_ECHO_START;
|
int32_t encoderMovementSteps = abs(encoderDiff) / ENCODER_PULSES_PER_STEP;
|
||||||
SERIAL_ECHO("Enc Step Rate: ");
|
|
||||||
SERIAL_ECHO(encoderStepRate);
|
if (lastEncoderMovementMillis != 0) {
|
||||||
SERIAL_ECHO(" Multiplier: ");
|
// Note that the rate is always calculated between to passes through the
|
||||||
SERIAL_ECHO(encoderMultiplier);
|
// loop and that the abs of the encoderDiff value is tracked.
|
||||||
SERIAL_ECHO(" ENCODER_10X_STEPS_PER_SEC: ");
|
float encoderStepRate = (float)(encoderMovementSteps) / ((float)(ms - lastEncoderMovementMillis)) * 1000.0;
|
||||||
SERIAL_ECHO(ENCODER_10X_STEPS_PER_SEC);
|
|
||||||
SERIAL_ECHO(" ENCODER_100X_STEPS_PER_SEC: ");
|
if (encoderStepRate >= ENCODER_100X_STEPS_PER_SEC) encoderMultiplier = 100;
|
||||||
SERIAL_ECHOLN(ENCODER_100X_STEPS_PER_SEC);
|
else if (encoderStepRate >= ENCODER_10X_STEPS_PER_SEC) encoderMultiplier = 10;
|
||||||
#endif //ENCODER_RATE_MULTIPLIER_DEBUG
|
|
||||||
|
#ifdef ENCODER_RATE_MULTIPLIER_DEBUG
|
||||||
|
SERIAL_ECHO_START;
|
||||||
|
SERIAL_ECHO("Enc Step Rate: ");
|
||||||
|
SERIAL_ECHO(encoderStepRate);
|
||||||
|
SERIAL_ECHO(" Multiplier: ");
|
||||||
|
SERIAL_ECHO(encoderMultiplier);
|
||||||
|
SERIAL_ECHO(" ENCODER_10X_STEPS_PER_SEC: ");
|
||||||
|
SERIAL_ECHO(ENCODER_10X_STEPS_PER_SEC);
|
||||||
|
SERIAL_ECHO(" ENCODER_100X_STEPS_PER_SEC: ");
|
||||||
|
SERIAL_ECHOLN(ENCODER_100X_STEPS_PER_SEC);
|
||||||
|
#endif //ENCODER_RATE_MULTIPLIER_DEBUG
|
||||||
|
}
|
||||||
|
|
||||||
|
lastEncoderMovementMillis = ms;
|
||||||
|
}
|
||||||
|
#endif //ENCODER_RATE_MULTIPLIER
|
||||||
|
|
||||||
|
lcdDrawUpdate = 1;
|
||||||
|
encoderPosition += (encoderDiff * encoderMultiplier) / ENCODER_PULSES_PER_STEP;
|
||||||
|
encoderDiff = 0;
|
||||||
|
}
|
||||||
|
timeoutToStatus = ms + LCD_TIMEOUT_TO_STATUS;
|
||||||
}
|
}
|
||||||
|
|
||||||
lastEncoderMovementMillis = millis();
|
#endif //ULTIPANEL
|
||||||
}
|
|
||||||
#endif //ENCODER_RATE_MULTIPLIER
|
|
||||||
|
|
||||||
lcdDrawUpdate = 1;
|
#ifdef DOGLCD // Changes due to different driver architecture of the DOGM display
|
||||||
encoderPosition += (encoderDiff * encoderMultiplier) / ENCODER_PULSES_PER_STEP;
|
blink++; // Variable for fan animation and alive dot
|
||||||
encoderDiff = 0;
|
u8g.firstPage();
|
||||||
timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS;
|
do {
|
||||||
}
|
u8g.setFont(FONT_MENU);
|
||||||
if (LCD_CLICKED)
|
u8g.setPrintPos(125, 0);
|
||||||
timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS;
|
if (blink % 2) u8g.setColorIndex(1); else u8g.setColorIndex(0); // Set color for the alive dot
|
||||||
#endif//ULTIPANEL
|
u8g.drawPixel(127, 63); // draw alive dot
|
||||||
|
u8g.setColorIndex(1); // black on white
|
||||||
#ifdef DOGLCD // Changes due to different driver architecture of the DOGM display
|
|
||||||
blink++; // Variable for fan animation and alive dot
|
|
||||||
u8g.firstPage();
|
|
||||||
do
|
|
||||||
{
|
|
||||||
u8g.setFont(FONT_MENU);
|
|
||||||
u8g.setPrintPos(125,0);
|
|
||||||
if (blink % 2) u8g.setColorIndex(1); else u8g.setColorIndex(0); // Set color for the alive dot
|
|
||||||
u8g.drawPixel(127,63); // draw alive dot
|
|
||||||
u8g.setColorIndex(1); // black on white
|
|
||||||
(*currentMenu)();
|
|
||||||
if (!lcdDrawUpdate) break; // Terminate display update, when nothing new to draw. This must be done before the last dogm.next()
|
|
||||||
} while( u8g.nextPage() );
|
|
||||||
#else
|
|
||||||
(*currentMenu)();
|
(*currentMenu)();
|
||||||
#endif
|
if (!lcdDrawUpdate) break; // Terminate display update, when nothing new to draw. This must be done before the last dogm.next()
|
||||||
|
} while( u8g.nextPage() );
|
||||||
|
#else
|
||||||
|
(*currentMenu)();
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef LCD_HAS_STATUS_INDICATORS
|
#ifdef LCD_HAS_STATUS_INDICATORS
|
||||||
lcd_implementation_update_indicators();
|
lcd_implementation_update_indicators();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
if(timeoutToStatus < millis() && currentMenu != lcd_status_screen)
|
if (currentMenu != lcd_status_screen && millis() > timeoutToStatus) {
|
||||||
{
|
lcd_return_to_status();
|
||||||
lcd_return_to_status();
|
lcdDrawUpdate = 2;
|
||||||
lcdDrawUpdate = 2;
|
}
|
||||||
}
|
#endif //ULTIPANEL
|
||||||
#endif//ULTIPANEL
|
|
||||||
if (lcdDrawUpdate == 2) lcd_implementation_clear();
|
if (lcdDrawUpdate == 2) lcd_implementation_clear();
|
||||||
if (lcdDrawUpdate) lcdDrawUpdate--;
|
if (lcdDrawUpdate) lcdDrawUpdate--;
|
||||||
lcd_next_update_millis = millis() + LCD_UPDATE_INTERVAL;
|
lcd_next_update_millis = millis() + LCD_UPDATE_INTERVAL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_ignore_click(bool b)
|
void lcd_ignore_click(bool b) {
|
||||||
{
|
ignore_click = b;
|
||||||
ignore_click = b;
|
wait_for_unclick = false;
|
||||||
wait_for_unclick = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_finishstatus() {
|
void lcd_finishstatus() {
|
||||||
|
@ -1521,145 +1362,122 @@ void lcd_finishstatus() {
|
||||||
message_millis = millis(); //get status message to show up for a while
|
message_millis = millis(); //get status message to show up for a while
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
void lcd_setstatus(const char* message)
|
|
||||||
{
|
void lcd_setstatus(const char* message) {
|
||||||
if (lcd_status_message_level > 0)
|
if (lcd_status_message_level > 0) return;
|
||||||
return;
|
strncpy(lcd_status_message, message, LCD_WIDTH);
|
||||||
strncpy(lcd_status_message, message, LCD_WIDTH);
|
lcd_finishstatus();
|
||||||
lcd_finishstatus();
|
|
||||||
}
|
|
||||||
void lcd_setstatuspgm(const char* message)
|
|
||||||
{
|
|
||||||
if (lcd_status_message_level > 0)
|
|
||||||
return;
|
|
||||||
strncpy_P(lcd_status_message, message, LCD_WIDTH);
|
|
||||||
lcd_finishstatus();
|
|
||||||
}
|
|
||||||
void lcd_setalertstatuspgm(const char* message)
|
|
||||||
{
|
|
||||||
lcd_setstatuspgm(message);
|
|
||||||
lcd_status_message_level = 1;
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
lcd_return_to_status();
|
|
||||||
#endif//ULTIPANEL
|
|
||||||
}
|
|
||||||
void lcd_reset_alert_level()
|
|
||||||
{
|
|
||||||
lcd_status_message_level = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void lcd_setstatuspgm(const char* message) {
|
||||||
|
if (lcd_status_message_level > 0) return;
|
||||||
|
strncpy_P(lcd_status_message, message, LCD_WIDTH);
|
||||||
|
lcd_finishstatus();
|
||||||
|
}
|
||||||
|
|
||||||
|
void lcd_setalertstatuspgm(const char* message) {
|
||||||
|
lcd_setstatuspgm(message);
|
||||||
|
lcd_status_message_level = 1;
|
||||||
|
#ifdef ULTIPANEL
|
||||||
|
lcd_return_to_status();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void lcd_reset_alert_level() { lcd_status_message_level = 0; }
|
||||||
|
|
||||||
#ifdef DOGLCD
|
#ifdef DOGLCD
|
||||||
void lcd_setcontrast(uint8_t value)
|
void lcd_setcontrast(uint8_t value) {
|
||||||
{
|
|
||||||
lcd_contrast = value & 63;
|
lcd_contrast = value & 63;
|
||||||
u8g.setContrast(lcd_contrast);
|
u8g.setContrast(lcd_contrast);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
|
|
||||||
/* Warning: This function is called from interrupt context */
|
/* Warning: This function is called from interrupt context */
|
||||||
void lcd_buttons_update()
|
void lcd_buttons_update() {
|
||||||
{
|
#ifdef NEWPANEL
|
||||||
#ifdef NEWPANEL
|
uint8_t newbutton = 0;
|
||||||
uint8_t newbutton=0;
|
if (READ(BTN_EN1) == 0) newbutton |= EN_A;
|
||||||
if(READ(BTN_EN1)==0) newbutton|=EN_A;
|
if (READ(BTN_EN2) == 0) newbutton |= EN_B;
|
||||||
if(READ(BTN_EN2)==0) newbutton|=EN_B;
|
#if BTN_ENC > 0
|
||||||
#if BTN_ENC > 0
|
if (millis() > blocking_enc && READ(BTN_ENC) == 0) newbutton |= EN_C;
|
||||||
if((blocking_enc<millis()) && (READ(BTN_ENC)==0))
|
#endif
|
||||||
newbutton |= EN_C;
|
|
||||||
#endif
|
|
||||||
buttons = newbutton;
|
buttons = newbutton;
|
||||||
#ifdef LCD_HAS_SLOW_BUTTONS
|
#ifdef LCD_HAS_SLOW_BUTTONS
|
||||||
buttons |= slow_buttons;
|
buttons |= slow_buttons;
|
||||||
#endif
|
#endif
|
||||||
#ifdef REPRAPWORLD_KEYPAD
|
#ifdef REPRAPWORLD_KEYPAD
|
||||||
// for the reprapworld_keypad
|
// for the reprapworld_keypad
|
||||||
uint8_t newbutton_reprapworld_keypad=0;
|
uint8_t newbutton_reprapworld_keypad=0;
|
||||||
WRITE(SHIFT_LD,LOW);
|
WRITE(SHIFT_LD, LOW);
|
||||||
WRITE(SHIFT_LD,HIGH);
|
WRITE(SHIFT_LD, HIGH);
|
||||||
for(int8_t i=0;i<8;i++) {
|
for(int8_t i = 0; i < 8; i++) {
|
||||||
newbutton_reprapworld_keypad = newbutton_reprapworld_keypad>>1;
|
newbutton_reprapworld_keypad >>= 1;
|
||||||
if(READ(SHIFT_OUT))
|
if (READ(SHIFT_OUT)) newbutton_reprapworld_keypad |= (1 << 7);
|
||||||
newbutton_reprapworld_keypad|=(1<<7);
|
WRITE(SHIFT_CLK, HIGH);
|
||||||
WRITE(SHIFT_CLK,HIGH);
|
WRITE(SHIFT_CLK, LOW);
|
||||||
WRITE(SHIFT_CLK,LOW);
|
|
||||||
}
|
}
|
||||||
buttons_reprapworld_keypad=~newbutton_reprapworld_keypad; //invert it, because a pressed switch produces a logical 0
|
buttons_reprapworld_keypad=~newbutton_reprapworld_keypad; //invert it, because a pressed switch produces a logical 0
|
||||||
#endif
|
#endif
|
||||||
#else //read it from the shift register
|
#else //read it from the shift register
|
||||||
uint8_t newbutton=0;
|
uint8_t newbutton = 0;
|
||||||
WRITE(SHIFT_LD,LOW);
|
WRITE(SHIFT_LD, LOW);
|
||||||
WRITE(SHIFT_LD,HIGH);
|
WRITE(SHIFT_LD, HIGH);
|
||||||
unsigned char tmp_buttons=0;
|
unsigned char tmp_buttons = 0;
|
||||||
for(int8_t i=0;i<8;i++)
|
for(int8_t i=0; i<8; i++) {
|
||||||
{
|
newbutton >>= 1;
|
||||||
newbutton = newbutton>>1;
|
if (READ(SHIFT_OUT)) newbutton |= (1 << 7);
|
||||||
if(READ(SHIFT_OUT))
|
WRITE(SHIFT_CLK, HIGH);
|
||||||
newbutton|=(1<<7);
|
WRITE(SHIFT_CLK, LOW);
|
||||||
WRITE(SHIFT_CLK,HIGH);
|
|
||||||
WRITE(SHIFT_CLK,LOW);
|
|
||||||
}
|
}
|
||||||
buttons=~newbutton; //invert it, because a pressed switch produces a logical 0
|
buttons = ~newbutton; //invert it, because a pressed switch produces a logical 0
|
||||||
#endif//!NEWPANEL
|
#endif //!NEWPANEL
|
||||||
|
|
||||||
//manage encoder rotation
|
//manage encoder rotation
|
||||||
uint8_t enc=0;
|
uint8_t enc=0;
|
||||||
if (buttons & EN_A) enc |= B01;
|
if (buttons & EN_A) enc |= B01;
|
||||||
if (buttons & EN_B) enc |= B10;
|
if (buttons & EN_B) enc |= B10;
|
||||||
if(enc != lastEncoderBits)
|
if (enc != lastEncoderBits) {
|
||||||
{
|
switch(enc) {
|
||||||
switch(enc)
|
case encrot0:
|
||||||
{
|
if (lastEncoderBits==encrot3) encoderDiff++;
|
||||||
case encrot0:
|
else if (lastEncoderBits==encrot1) encoderDiff--;
|
||||||
if(lastEncoderBits==encrot3)
|
break;
|
||||||
encoderDiff++;
|
case encrot1:
|
||||||
else if(lastEncoderBits==encrot1)
|
if (lastEncoderBits==encrot0) encoderDiff++;
|
||||||
encoderDiff--;
|
else if (lastEncoderBits==encrot2) encoderDiff--;
|
||||||
break;
|
break;
|
||||||
case encrot1:
|
case encrot2:
|
||||||
if(lastEncoderBits==encrot0)
|
if (lastEncoderBits==encrot1) encoderDiff++;
|
||||||
encoderDiff++;
|
else if (lastEncoderBits==encrot3) encoderDiff--;
|
||||||
else if(lastEncoderBits==encrot2)
|
break;
|
||||||
encoderDiff--;
|
case encrot3:
|
||||||
break;
|
if (lastEncoderBits==encrot2) encoderDiff++;
|
||||||
case encrot2:
|
else if (lastEncoderBits==encrot0) encoderDiff--;
|
||||||
if(lastEncoderBits==encrot1)
|
break;
|
||||||
encoderDiff++;
|
|
||||||
else if(lastEncoderBits==encrot3)
|
|
||||||
encoderDiff--;
|
|
||||||
break;
|
|
||||||
case encrot3:
|
|
||||||
if(lastEncoderBits==encrot2)
|
|
||||||
encoderDiff++;
|
|
||||||
else if(lastEncoderBits==encrot0)
|
|
||||||
encoderDiff--;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
lastEncoderBits = enc;
|
}
|
||||||
|
lastEncoderBits = enc;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool lcd_detected(void)
|
bool lcd_detected(void) {
|
||||||
{
|
#if (defined(LCD_I2C_TYPE_MCP23017) || defined(LCD_I2C_TYPE_MCP23008)) && defined(DETECT_DEVICE)
|
||||||
#if (defined(LCD_I2C_TYPE_MCP23017) || defined(LCD_I2C_TYPE_MCP23008)) && defined(DETECT_DEVICE)
|
return lcd.LcdDetected() == 1;
|
||||||
return lcd.LcdDetected() == 1;
|
#else
|
||||||
#else
|
return true;
|
||||||
return true;
|
#endif
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_buzz(long duration, uint16_t freq)
|
void lcd_buzz(long duration, uint16_t freq) {
|
||||||
{
|
#ifdef LCD_USE_I2C_BUZZER
|
||||||
#ifdef LCD_USE_I2C_BUZZER
|
lcd.buzz(duration,freq);
|
||||||
lcd.buzz(duration,freq);
|
#endif
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool lcd_clicked()
|
bool lcd_clicked() { return LCD_CLICKED; }
|
||||||
{
|
|
||||||
return LCD_CLICKED;
|
#endif //ULTIPANEL
|
||||||
}
|
|
||||||
#endif//ULTIPANEL
|
|
||||||
|
|
||||||
/********************************/
|
/********************************/
|
||||||
/** Float conversion utilities **/
|
/** Float conversion utilities **/
|
||||||
|
|
Reference in a new issue