Simpler Allen Key config. Fixes, cleanups from refactor (#15256)

This commit is contained in:
Scott Lahteine
2019-09-14 03:05:10 -05:00
committed by GitHub
parent ffb418b226
commit 465c6d9230
62 changed files with 389 additions and 685 deletions

View File

@ -133,9 +133,11 @@
#endif // SWITCHING_NOZZLE
inline void fast_line_to_current(const AxisEnum fr_axis) {
planner.buffer_line(current_position, planner.settings.max_feedrate_mm_s[fr_axis], active_extruder);
inline void _line_to_current(const AxisEnum fr_axis, const float fscale=1.0f) {
planner.buffer_line(current_position, planner.settings.max_feedrate_mm_s[fr_axis] * fscale, active_extruder);
}
inline void slow_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0.5f); }
inline void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis); }
#if ENABLED(MAGNETIC_PARKING_EXTRUDER)
@ -150,13 +152,11 @@ inline void fast_line_to_current(const AxisEnum fr_axis) {
const float oldx = current_position[X_AXIS],
grabpos = mpe_settings.parking_xpos[new_tool] + (new_tool ? mpe_settings.grab_distance : -mpe_settings.grab_distance),
offsetcompensation =
offsetcompensation = (0
#if HAS_HOTEND_OFFSET
hotend_offset[X_AXIS][active_extruder] * mpe_settings.compensation_factor
#else
0
+ hotend_offset[X_AXIS][active_extruder] * mpe_settings.compensation_factor
#endif
;
);
if (axis_unhomed_error(true, false, false)) return;
@ -337,7 +337,7 @@ inline void fast_line_to_current(const AxisEnum fr_axis) {
planner.synchronize();
DEBUG_POS("(5) Unpark extruder", current_position);
}
planner.buffer_line(current_position, planner.settings.max_feedrate_mm_s[X_AXIS] * 0.5, active_extruder);
slow_line_to_current(X_AXIS);
// STEP 6
@ -411,7 +411,7 @@ inline void fast_line_to_current(const AxisEnum fr_axis) {
current_position[Y_AXIS] = SWITCHING_TOOLHEAD_Y_POS;
if (DEBUGGING(LEVELING)) DEBUG_POS("Move Y SwitchPos", current_position);
planner.buffer_line(current_position, planner.settings.max_feedrate_mm_s[Y_AXIS] * 0.5f, active_extruder);
slow_line_to_current(Y_AXIS);
// Wait for move to complete, then another 0.2s
planner.synchronize();
@ -446,7 +446,7 @@ inline void fast_line_to_current(const AxisEnum fr_axis) {
DEBUG_ECHOLNPGM("(4) Grab and lock new toolhead");
DEBUG_POS("Move Y SwitchPos", current_position);
}
planner.buffer_line(current_position, planner.settings.max_feedrate_mm_s[Y_AXIS] * 0.5, active_extruder);
slow_line_to_current(Y_AXIS);
// Wait for move to finish, pause 0.2s, move servo, pause 0.5s
planner.synchronize();
@ -491,21 +491,21 @@ inline void fast_line_to_current(const AxisEnum fr_axis) {
SERIAL_ECHOLNPAIR("(1) Place old tool ", int(active_extruder));
DEBUG_POS("Move Y SwitchPos + Security", current_position);
}
planner.buffer_line(current_position, planner.settings.max_feedrate_mm_s[Y_AXIS], active_extruder);
fast_line_to_current(Y_AXIS);
current_position[X_AXIS] = placexclear;
if (DEBUGGING(LEVELING)) {
planner.synchronize();
DEBUG_POS("Move X SwitchPos + Security", current_position);
}
planner.buffer_line(current_position, planner.settings.max_feedrate_mm_s[X_AXIS], active_extruder);
fast_line_to_current(X_AXIS);
current_position[Y_AXIS] = SWITCHING_TOOLHEAD_Y_POS;
if (DEBUGGING(LEVELING)) {
planner.synchronize();
DEBUG_POS("Move Y SwitchPos", current_position);
}
planner.buffer_line(current_position, planner.settings.max_feedrate_mm_s[Y_AXIS], active_extruder);
fast_line_to_current(Y_AXIS);
current_position[X_AXIS] = placexpos;
if (DEBUGGING(LEVELING)) {
@ -541,7 +541,7 @@ inline void fast_line_to_current(const AxisEnum fr_axis) {
current_position[X_AXIS] = grabxpos;
if (DEBUGGING(LEVELING)) DEBUG_POS("Move to new toolhead X", current_position);
planner.buffer_line(current_position, planner.settings.max_feedrate_mm_s[X_AXIS], active_extruder);
fast_line_to_current(X_AXIS);
// 4. Grab the new toolhead and move to security position
@ -559,7 +559,7 @@ inline void fast_line_to_current(const AxisEnum fr_axis) {
planner.synchronize();
DEBUG_POS("Move Y SwitchPos", current_position);
}
planner.buffer_line(current_position, planner.settings.max_feedrate_mm_s[Y_AXIS] * 0.2, active_extruder);
_line_to_current(Y_AXIS, 0.2f);
#if ENABLED(PRIME_BEFORE_REMOVE) && (SWITCHING_TOOLHEAD_PRIME_MM || SWITCHING_TOOLHEAD_RETRACT_MM)
#if SWITCHING_TOOLHEAD_PRIME_MM
@ -577,13 +577,13 @@ inline void fast_line_to_current(const AxisEnum fr_axis) {
current_position[X_AXIS] = grabxclear;
if (DEBUGGING(LEVELING)) DEBUG_POS("Move to new toolhead X + Security", current_position);
planner.buffer_line(current_position, planner.settings.max_feedrate_mm_s[X_AXIS] * 0.1, active_extruder);
_line_to_current(X_AXIS, 0.1f);
planner.synchronize();
safe_delay(100); // Give switch time to settle
current_position[Y_AXIS] += SWITCHING_TOOLHEAD_Y_CLEAR;
if (DEBUGGING(LEVELING)) DEBUG_POS("Move back Y clear", current_position);
planner.buffer_line(current_position, planner.settings.max_feedrate_mm_s[Y_AXIS], active_extruder); // move away from docked toolhead
fast_line_to_current(Y_AXIS); // move away from docked toolhead
planner.synchronize(); // Always sync last tool-change move
if (DEBUGGING(LEVELING)) DEBUG_POS("MST Tool-Change done.", current_position);
@ -620,7 +620,7 @@ inline void fast_line_to_current(const AxisEnum fr_axis) {
current_position[Z_AXIS] += SWITCHING_TOOLHEAD_Z_HOP;
if (DEBUGGING(LEVELING)) DEBUG_POS("(1) Raise Z-Axis ", current_position);
planner.buffer_line(current_position, planner.settings.max_feedrate_mm_s[Z_AXIS], active_extruder);
fast_line_to_current(Z_AXIS);
// 2. Move to position near active extruder parking
@ -629,9 +629,9 @@ inline void fast_line_to_current(const AxisEnum fr_axis) {
SERIAL_ECHOLNPAIR("(2) Move near active extruder parking", active_extruder);
DEBUG_POS("Moving ParkPos", current_position);
}
current_position[X_AXIS] = placexpos + hotend_offset[X_AXIS][active_extruder];
current_position[Y_AXIS] = SWITCHING_TOOLHEAD_Y_POS + SWITCHING_TOOLHEAD_Y_CLEAR + hotend_offset[Y_AXIS][active_extruder];
planner.buffer_line(current_position, planner.settings.max_feedrate_mm_s[X_AXIS], active_extruder);
current_position[X_AXIS] = hotend_offset[X_AXIS][active_extruder] + placexpos;
current_position[Y_AXIS] = hotend_offset[Y_AXIS][active_extruder] + SWITCHING_TOOLHEAD_Y_POS + SWITCHING_TOOLHEAD_Y_CLEAR;
fast_line_to_current(X_AXIS);
// 3. Move gently to park position of active extruder
@ -642,7 +642,7 @@ inline void fast_line_to_current(const AxisEnum fr_axis) {
}
current_position[Y_AXIS] -= SWITCHING_TOOLHEAD_Y_CLEAR;
planner.buffer_line(current_position, planner.settings.max_feedrate_mm_s[Y_AXIS] * 0.5, active_extruder);
slow_line_to_current(Y_AXIS);
// 4. Disengage magnetic field, wait for delay
@ -658,10 +658,11 @@ inline void fast_line_to_current(const AxisEnum fr_axis) {
}
current_position[Y_AXIS] += SWITCHING_TOOLHEAD_Y_CLEAR;
planner.buffer_line(current_position, planner.settings.max_feedrate_mm_s[Y_AXIS] * 0.5f, active_extruder);
current_position[X_AXIS] = grabxpos + hotend_offset[X_AXIS][active_extruder];
current_position[Y_AXIS] = SWITCHING_TOOLHEAD_Y_POS + SWITCHING_TOOLHEAD_Y_CLEAR + hotend_offset[Y_AXIS][active_extruder];
planner.buffer_line(current_position, planner.settings.max_feedrate_mm_s[X_AXIS], active_extruder);
slow_line_to_current(Y_AXIS);
current_position[X_AXIS] = hotend_offset[X_AXIS][active_extruder] + grabxpos;
current_position[Y_AXIS] = hotend_offset[Y_AXIS][active_extruder] + SWITCHING_TOOLHEAD_Y_POS + SWITCHING_TOOLHEAD_Y_CLEAR;
fast_line_to_current(X_AXIS);
// 6. Move gently to park position of new extruder
@ -670,7 +671,7 @@ inline void fast_line_to_current(const AxisEnum fr_axis) {
planner.synchronize();
DEBUG_ECHOLNPGM("(6) Move near new extruder");
}
planner.buffer_line(current_position, planner.settings.max_feedrate_mm_s[Y_AXIS] * 0.5f, active_extruder);
slow_line_to_current(Y_AXIS);
// 7. Engage magnetic field for new extruder parking
@ -682,7 +683,7 @@ inline void fast_line_to_current(const AxisEnum fr_axis) {
current_position[Y_AXIS] += SWITCHING_TOOLHEAD_Y_CLEAR;
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("(8) Unpark extruder");
planner.buffer_line(current_position, planner.settings.max_feedrate_mm_s[X_AXIS] * 0.5f, active_extruder);
slow_line_to_current(X_AXIS);
planner.synchronize(); // Always sync the final move
// 9. Apply Z hotend offset to current position