From 55c287a69e7a3fb38220328b5eb938999af1d1d4 Mon Sep 17 00:00:00 2001 From: Nicolas Rossi Date: Sun, 28 Jul 2013 22:54:37 +0200 Subject: [PATCH] Fixed move from panel for delta bot #557 --- Marlin/Marlin.h | 1 + Marlin/Marlin_main.cpp | 7 ++++--- Marlin/ultralcd.cpp | 20 ++++++++++++++++++++ 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/Marlin/Marlin.h b/Marlin/Marlin.h index 1ae9494e34..b92d81072a 100644 --- a/Marlin/Marlin.h +++ b/Marlin/Marlin.h @@ -163,6 +163,7 @@ void ClearToSend(); void get_coordinates(); #ifdef DELTA void calculate_delta(float cartesian[3]); +extern float delta[3]; #endif void prepare_move(); void kill(); diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 886edca490..007991781b 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -198,14 +198,15 @@ int EtoPPressure=0; bool powersupply = true; #endif +#ifdef DELTA +float delta[3] = {0.0, 0.0, 0.0}; +#endif + //=========================================================================== //=============================private variables============================= //=========================================================================== const char axis_codes[NUM_AXIS] = {'X', 'Y', 'Z', 'E'}; static float destination[NUM_AXIS] = { 0.0, 0.0, 0.0, 0.0}; -#ifdef DELTA -static float delta[3] = {0.0, 0.0, 0.0}; -#endif static float offset[3] = {0.0, 0.0, 0.0}; static bool home_all_axis = true; static float feedrate = 1500.0, next_feedrate, saved_feedrate; diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index f6fc82d40c..163c414293 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -374,7 +374,12 @@ static void lcd_move_x() if (max_software_endstops && current_position[X_AXIS] > X_MAX_POS) current_position[X_AXIS] = X_MAX_POS; encoderPosition = 0; + #ifdef DELTA + calculate_delta(current_position); + plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], current_position[E_AXIS], 600, active_extruder); + #else plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600, active_extruder); + #endif lcdDrawUpdate = 1; } if (lcdDrawUpdate) @@ -398,7 +403,12 @@ static void lcd_move_y() if (max_software_endstops && current_position[Y_AXIS] > Y_MAX_POS) current_position[Y_AXIS] = Y_MAX_POS; encoderPosition = 0; + #ifdef DELTA + calculate_delta(current_position); + plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], current_position[E_AXIS], 600, active_extruder); + #else plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600, active_extruder); + #endif lcdDrawUpdate = 1; } if (lcdDrawUpdate) @@ -422,7 +432,12 @@ static void lcd_move_z() if (max_software_endstops && current_position[Z_AXIS] > Z_MAX_POS) current_position[Z_AXIS] = Z_MAX_POS; encoderPosition = 0; + #ifdef DELTA + calculate_delta(current_position); + plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS]/60, active_extruder); + #else plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS]/60, active_extruder); + #endif lcdDrawUpdate = 1; } if (lcdDrawUpdate) @@ -442,7 +457,12 @@ static void lcd_move_e() { current_position[E_AXIS] += float((int)encoderPosition) * move_menu_scale; encoderPosition = 0; + #ifdef DELTA + calculate_delta(current_position); + plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], current_position[E_AXIS], 20, active_extruder); + #else plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 20, active_extruder); + #endif lcdDrawUpdate = 1; } if (lcdDrawUpdate)