✨ Support for up to 9 axes (linear, rotary) (#23112)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
This commit is contained in:
@@ -286,7 +286,7 @@ void DGUSTxHandler::TempMax(DGUS_VP &vp) {
|
||||
}
|
||||
|
||||
void DGUSTxHandler::StepperStatus(DGUS_VP &vp) {
|
||||
const bool motor_on = stepper.axis_enabled.bits & (_BV(LINEAR_AXES) - 1);
|
||||
const bool motor_on = stepper.axis_enabled.bits & (_BV(NUM_AXES) - 1);
|
||||
dgus_display.Write((uint16_t)vp.addr, Swap16(uint16_t(motor_on ? DGUS_Data::Status::ENABLED : DGUS_Data::Status::DISABLED)));
|
||||
}
|
||||
|
||||
|
||||
@@ -420,6 +420,15 @@ namespace ExtUI {
|
||||
#if AXIS_IS_TMC(K)
|
||||
case K: return stepperK.getMilliamps();
|
||||
#endif
|
||||
#if AXIS_IS_TMC(U)
|
||||
case U: return stepperU.getMilliamps();
|
||||
#endif
|
||||
#if AXIS_IS_TMC(V)
|
||||
case V: return stepperV.getMilliamps();
|
||||
#endif
|
||||
#if AXIS_IS_TMC(W)
|
||||
case W: return stepperW.getMilliamps();
|
||||
#endif
|
||||
#if AXIS_IS_TMC(X2)
|
||||
case X2: return stepperX2.getMilliamps();
|
||||
#endif
|
||||
@@ -489,6 +498,15 @@ namespace ExtUI {
|
||||
#if AXIS_IS_TMC(K)
|
||||
case K: stepperK.rms_current(constrain(mA, 400, 1500)); break;
|
||||
#endif
|
||||
#if AXIS_IS_TMC(U)
|
||||
case U: stepperU.rms_current(constrain(mA, 400, 1500)); break;
|
||||
#endif
|
||||
#if AXIS_IS_TMC(V)
|
||||
case V: stepperV.rms_current(constrain(mA, 400, 1500)); break;
|
||||
#endif
|
||||
#if AXIS_IS_TMC(W)
|
||||
case W: stepperW.rms_current(constrain(mA, 400, 1500)); break;
|
||||
#endif
|
||||
#if AXIS_IS_TMC(X2)
|
||||
case X2: stepperX2.rms_current(constrain(mA, 400, 1500)); break;
|
||||
#endif
|
||||
@@ -546,6 +564,9 @@ namespace ExtUI {
|
||||
OPTCODE(I_SENSORLESS, case I: return stepperI.homing_threshold())
|
||||
OPTCODE(J_SENSORLESS, case J: return stepperJ.homing_threshold())
|
||||
OPTCODE(K_SENSORLESS, case K: return stepperK.homing_threshold())
|
||||
OPTCODE(U_SENSORLESS, case U: return stepperU.homing_threshold())
|
||||
OPTCODE(V_SENSORLESS, case V: return stepperV.homing_threshold())
|
||||
OPTCODE(W_SENSORLESS, case W: return stepperW.homing_threshold())
|
||||
OPTCODE(X2_SENSORLESS, case X2: return stepperX2.homing_threshold())
|
||||
OPTCODE(Y2_SENSORLESS, case Y2: return stepperY2.homing_threshold())
|
||||
OPTCODE(Z2_SENSORLESS, case Z2: return stepperZ2.homing_threshold())
|
||||
@@ -575,6 +596,15 @@ namespace ExtUI {
|
||||
#if K_SENSORLESS
|
||||
case K: stepperK.homing_threshold(value); break;
|
||||
#endif
|
||||
#if U_SENSORLESS
|
||||
case U: stepperU.homing_threshold(value); break;
|
||||
#endif
|
||||
#if V_SENSORLESS
|
||||
case V: stepperV.homing_threshold(value); break;
|
||||
#endif
|
||||
#if W_SENSORLESS
|
||||
case W: stepperW.homing_threshold(value); break;
|
||||
#endif
|
||||
#if X2_SENSORLESS
|
||||
case X2: stepperX2.homing_threshold(value); break;
|
||||
#endif
|
||||
|
||||
@@ -57,7 +57,7 @@ namespace ExtUI {
|
||||
|
||||
static constexpr size_t eeprom_data_size = 48;
|
||||
|
||||
enum axis_t : uint8_t { X, Y, Z, I, J, K, X2, Y2, Z2, Z3, Z4 };
|
||||
enum axis_t : uint8_t { X, Y, Z, I, J, K, U, V, W, X2, Y2, Z2, Z3, Z4 };
|
||||
enum extruder_t : uint8_t { E0, E1, E2, E3, E4, E5, E6, E7 };
|
||||
enum heater_t : uint8_t { H0, H1, H2, H3, H4, H5, BED, CHAMBER, COOLER };
|
||||
enum fan_t : uint8_t { FAN0, FAN1, FAN2, FAN3, FAN4, FAN5, FAN6, FAN7 };
|
||||
|
||||
@@ -103,6 +103,9 @@ namespace Language_en {
|
||||
LSTR MSG_HOME_OFFSET_I = _UxGT("Home Offset ") STR_I;
|
||||
LSTR MSG_HOME_OFFSET_J = _UxGT("Home Offset ") STR_J;
|
||||
LSTR MSG_HOME_OFFSET_K = _UxGT("Home Offset ") STR_K;
|
||||
LSTR MSG_HOME_OFFSET_U = _UxGT("Home Offset ") STR_U;
|
||||
LSTR MSG_HOME_OFFSET_V = _UxGT("Home Offset ") STR_V;
|
||||
LSTR MSG_HOME_OFFSET_W = _UxGT("Home Offset ") STR_W;
|
||||
LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Offsets Applied");
|
||||
LSTR MSG_SET_ORIGIN = _UxGT("Set Origin");
|
||||
LSTR MSG_TRAMMING_WIZARD = _UxGT("Tramming Wizard");
|
||||
@@ -288,6 +291,9 @@ namespace Language_en {
|
||||
LSTR MSG_MOVE_I = _UxGT("Move ") STR_I;
|
||||
LSTR MSG_MOVE_J = _UxGT("Move ") STR_J;
|
||||
LSTR MSG_MOVE_K = _UxGT("Move ") STR_K;
|
||||
LSTR MSG_MOVE_U = _UxGT("Move ") STR_U;
|
||||
LSTR MSG_MOVE_V = _UxGT("Move ") STR_V;
|
||||
LSTR MSG_MOVE_W = _UxGT("Move ") STR_W;
|
||||
LSTR MSG_MOVE_E = _UxGT("Move Extruder");
|
||||
LSTR MSG_MOVE_EN = _UxGT("Move E*");
|
||||
LSTR MSG_HOTEND_TOO_COLD = _UxGT("Hotend too cold");
|
||||
@@ -354,6 +360,9 @@ namespace Language_en {
|
||||
LSTR MSG_VI_JERK = _UxGT("Max ") STR_I _UxGT(" Jerk");
|
||||
LSTR MSG_VJ_JERK = _UxGT("Max ") STR_J _UxGT(" Jerk");
|
||||
LSTR MSG_VK_JERK = _UxGT("Max ") STR_K _UxGT(" Jerk");
|
||||
LSTR MSG_VU_JERK = _UxGT("Max ") STR_U _UxGT(" Jerk");
|
||||
LSTR MSG_VV_JERK = _UxGT("Max ") STR_V _UxGT(" Jerk");
|
||||
LSTR MSG_VW_JERK = _UxGT("Max ") STR_W _UxGT(" Jerk");
|
||||
LSTR MSG_VE_JERK = _UxGT("Max E Jerk");
|
||||
LSTR MSG_JUNCTION_DEVIATION = _UxGT("Junction Dev");
|
||||
LSTR MSG_VELOCITY = _UxGT("Velocity");
|
||||
@@ -363,6 +372,9 @@ namespace Language_en {
|
||||
LSTR MSG_VMAX_I = _UxGT("Max ") STR_I _UxGT(" Vel");
|
||||
LSTR MSG_VMAX_J = _UxGT("Max ") STR_J _UxGT(" Vel");
|
||||
LSTR MSG_VMAX_K = _UxGT("Max ") STR_K _UxGT(" Vel");
|
||||
LSTR MSG_VMAX_U = _UxGT("Max ") STR_U _UxGT(" Vel");
|
||||
LSTR MSG_VMAX_V = _UxGT("Max ") STR_V _UxGT(" Vel");
|
||||
LSTR MSG_VMAX_W = _UxGT("Max ") STR_W _UxGT(" Vel");
|
||||
LSTR MSG_VMAX_E = _UxGT("Max ") STR_E _UxGT(" Vel");
|
||||
LSTR MSG_VMAX_EN = _UxGT("Max * Vel");
|
||||
LSTR MSG_VMIN = _UxGT("Min Velocity");
|
||||
@@ -374,6 +386,9 @@ namespace Language_en {
|
||||
LSTR MSG_AMAX_I = _UxGT("Max ") STR_I _UxGT(" Accel");
|
||||
LSTR MSG_AMAX_J = _UxGT("Max ") STR_J _UxGT(" Accel");
|
||||
LSTR MSG_AMAX_K = _UxGT("Max ") STR_K _UxGT(" Accel");
|
||||
LSTR MSG_AMAX_U = _UxGT("Max ") STR_U _UxGT(" Accel");
|
||||
LSTR MSG_AMAX_V = _UxGT("Max ") STR_V _UxGT(" Accel");
|
||||
LSTR MSG_AMAX_W = _UxGT("Max ") STR_W _UxGT(" Accel");
|
||||
LSTR MSG_AMAX_E = _UxGT("Max ") STR_E _UxGT(" Accel");
|
||||
LSTR MSG_AMAX_EN = _UxGT("Max * Accel");
|
||||
LSTR MSG_A_RETRACT = _UxGT("Retract Accel");
|
||||
@@ -387,6 +402,9 @@ namespace Language_en {
|
||||
LSTR MSG_I_STEPS = STR_I _UxGT(" Steps/mm");
|
||||
LSTR MSG_J_STEPS = STR_J _UxGT(" Steps/mm");
|
||||
LSTR MSG_K_STEPS = STR_K _UxGT(" Steps/mm");
|
||||
LSTR MSG_U_STEPS = STR_U _UxGT(" Steps/mm");
|
||||
LSTR MSG_V_STEPS = STR_V _UxGT(" Steps/mm");
|
||||
LSTR MSG_W_STEPS = STR_W _UxGT(" Steps/mm");
|
||||
LSTR MSG_E_STEPS = _UxGT("E steps/mm");
|
||||
LSTR MSG_EN_STEPS = _UxGT("* Steps/mm");
|
||||
LSTR MSG_TEMPERATURE = _UxGT("Temperature");
|
||||
@@ -540,6 +558,9 @@ namespace Language_en {
|
||||
LSTR MSG_BABYSTEP_I = _UxGT("Babystep ") STR_I;
|
||||
LSTR MSG_BABYSTEP_J = _UxGT("Babystep ") STR_J;
|
||||
LSTR MSG_BABYSTEP_K = _UxGT("Babystep ") STR_K;
|
||||
LSTR MSG_BABYSTEP_U = _UxGT("Babystep ") STR_U;
|
||||
LSTR MSG_BABYSTEP_V = _UxGT("Babystep ") STR_V;
|
||||
LSTR MSG_BABYSTEP_W = _UxGT("Babystep ") STR_W;
|
||||
LSTR MSG_BABYSTEP_TOTAL = _UxGT("Total");
|
||||
LSTR MSG_ENDSTOP_ABORT = _UxGT("Endstop Abort");
|
||||
LSTR MSG_HEATING_FAILED_LCD = _UxGT("Heating Failed");
|
||||
@@ -639,6 +660,9 @@ namespace Language_en {
|
||||
LSTR MSG_DAC_PERCENT_I = STR_I _UxGT(" Driver %");
|
||||
LSTR MSG_DAC_PERCENT_J = STR_J _UxGT(" Driver %");
|
||||
LSTR MSG_DAC_PERCENT_K = STR_K _UxGT(" Driver %");
|
||||
LSTR MSG_DAC_PERCENT_U = STR_U _UxGT(" Driver %");
|
||||
LSTR MSG_DAC_PERCENT_V = STR_V _UxGT(" Driver %");
|
||||
LSTR MSG_DAC_PERCENT_W = STR_W _UxGT(" Driver %");
|
||||
LSTR MSG_DAC_PERCENT_E = _UxGT("E Driver %");
|
||||
LSTR MSG_ERROR_TMC = _UxGT("TMC CONNECTION ERROR");
|
||||
LSTR MSG_DAC_EEPROM_WRITE = _UxGT("DAC EEPROM Write");
|
||||
@@ -814,6 +838,9 @@ namespace Language_en {
|
||||
LSTR MSG_BACKLASH_I = STR_I;
|
||||
LSTR MSG_BACKLASH_J = STR_J;
|
||||
LSTR MSG_BACKLASH_K = STR_K;
|
||||
LSTR MSG_BACKLASH_U = STR_U;
|
||||
LSTR MSG_BACKLASH_V = STR_V;
|
||||
LSTR MSG_BACKLASH_W = STR_W;
|
||||
}
|
||||
|
||||
#if FAN_COUNT == 1
|
||||
|
||||
@@ -68,7 +68,7 @@ void menu_backlash();
|
||||
START_MENU();
|
||||
BACK_ITEM(MSG_ADVANCED_SETTINGS);
|
||||
#define EDIT_DAC_PERCENT(A) EDIT_ITEM(uint8, MSG_DAC_PERCENT_##A, &driverPercent[_AXIS(A)], 0, 100, []{ stepper_dac.set_current_percents(driverPercent); })
|
||||
LOGICAL_AXIS_CODE(EDIT_DAC_PERCENT(E), EDIT_DAC_PERCENT(A), EDIT_DAC_PERCENT(B), EDIT_DAC_PERCENT(C), EDIT_DAC_PERCENT(I), EDIT_DAC_PERCENT(J), EDIT_DAC_PERCENT(K));
|
||||
LOGICAL_AXIS_CODE(EDIT_DAC_PERCENT(E), EDIT_DAC_PERCENT(A), EDIT_DAC_PERCENT(B), EDIT_DAC_PERCENT(C), EDIT_DAC_PERCENT(I), EDIT_DAC_PERCENT(J), EDIT_DAC_PERCENT(K), EDIT_DAC_PERCENT(U), EDIT_DAC_PERCENT(V), EDIT_DAC_PERCENT(W));
|
||||
ACTION_ITEM(MSG_DAC_EEPROM_WRITE, stepper_dac.commit_eeprom);
|
||||
END_MENU();
|
||||
}
|
||||
@@ -356,7 +356,7 @@ void menu_backlash();
|
||||
#elif ENABLED(LIMITED_MAX_FR_EDITING)
|
||||
DEFAULT_MAX_FEEDRATE
|
||||
#else
|
||||
LOGICAL_AXIS_ARRAY(9999, 9999, 9999, 9999, 9999, 9999, 9999)
|
||||
LOGICAL_AXIS_ARRAY(9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999)
|
||||
#endif
|
||||
;
|
||||
#if ENABLED(LIMITED_MAX_FR_EDITING) && !defined(MAX_FEEDRATE_EDIT_VALUES)
|
||||
@@ -369,7 +369,7 @@ void menu_backlash();
|
||||
BACK_ITEM(MSG_ADVANCED_SETTINGS);
|
||||
|
||||
#define EDIT_VMAX(N) EDIT_ITEM_FAST(float5, MSG_VMAX_##N, &planner.settings.max_feedrate_mm_s[_AXIS(N)], 1, max_fr_edit_scaled[_AXIS(N)])
|
||||
LINEAR_AXIS_CODE(EDIT_VMAX(A), EDIT_VMAX(B), EDIT_VMAX(C), EDIT_VMAX(I), EDIT_VMAX(J), EDIT_VMAX(K));
|
||||
NUM_AXIS_CODE(EDIT_VMAX(A), EDIT_VMAX(B), EDIT_VMAX(C), EDIT_VMAX(I), EDIT_VMAX(J), EDIT_VMAX(K), EDIT_VMAX(U), EDIT_VMAX(V), EDIT_VMAX(W));
|
||||
|
||||
#if E_STEPPERS
|
||||
EDIT_ITEM_FAST(float5, MSG_VMAX_E, &planner.settings.max_feedrate_mm_s[E_AXIS_N(active_extruder)], 1, max_fr_edit_scaled.e);
|
||||
@@ -399,7 +399,7 @@ void menu_backlash();
|
||||
#elif ENABLED(LIMITED_MAX_ACCEL_EDITING)
|
||||
DEFAULT_MAX_ACCELERATION
|
||||
#else
|
||||
LOGICAL_AXIS_ARRAY(99000, 99000, 99000, 99000, 99000, 99000, 99000)
|
||||
LOGICAL_AXIS_ARRAY(99000, 99000, 99000, 99000, 99000, 99000, 99000, 99000, 99000, 99000)
|
||||
#endif
|
||||
;
|
||||
#if ENABLED(LIMITED_MAX_ACCEL_EDITING) && !defined(MAX_ACCEL_EDIT_VALUES)
|
||||
@@ -423,9 +423,10 @@ void menu_backlash();
|
||||
EDIT_ITEM_FAST(float5_25, MSG_A_TRAVEL, &planner.settings.travel_acceleration, 25, max_accel);
|
||||
|
||||
#define EDIT_AMAX(Q,L) EDIT_ITEM_FAST(long5_25, MSG_AMAX_##Q, &planner.settings.max_acceleration_mm_per_s2[_AXIS(Q)], L, max_accel_edit_scaled[_AXIS(Q)], []{ planner.reset_acceleration_rates(); })
|
||||
LINEAR_AXIS_CODE(
|
||||
NUM_AXIS_CODE(
|
||||
EDIT_AMAX(A, 100), EDIT_AMAX(B, 100), EDIT_AMAX(C, 10),
|
||||
EDIT_AMAX(I, 10), EDIT_AMAX(J, 10), EDIT_AMAX(K, 10)
|
||||
EDIT_AMAX(I, 10), EDIT_AMAX(J, 10), EDIT_AMAX(K, 10),
|
||||
EDIT_AMAX(U, 10), EDIT_AMAX(V, 10), EDIT_AMAX(W, 10)
|
||||
);
|
||||
|
||||
#if ENABLED(DISTINCT_E_FACTORS)
|
||||
@@ -468,9 +469,10 @@ void menu_backlash();
|
||||
#elif ENABLED(LIMITED_JERK_EDITING)
|
||||
{ LOGICAL_AXIS_LIST((DEFAULT_EJERK) * 2,
|
||||
(DEFAULT_XJERK) * 2, (DEFAULT_YJERK) * 2, (DEFAULT_ZJERK) * 2,
|
||||
(DEFAULT_IJERK) * 2, (DEFAULT_JJERK) * 2, (DEFAULT_KJERK) * 2) }
|
||||
(DEFAULT_IJERK) * 2, (DEFAULT_JJERK) * 2, (DEFAULT_KJERK) * 2,
|
||||
(DEFAULT_UJERK) * 2, (DEFAULT_VJERK) * 2, (DEFAULT_WJERK) * 2) }
|
||||
#else
|
||||
{ LOGICAL_AXIS_LIST(990, 990, 990, 990, 990, 990, 990) }
|
||||
{ LOGICAL_AXIS_LIST(990, 990, 990, 990, 990, 990, 990, 990, 990, 990) }
|
||||
#endif
|
||||
;
|
||||
#define EDIT_JERK(N) EDIT_ITEM_FAST(float3, MSG_V##N##_JERK, &planner.max_jerk[_AXIS(N)], 1, max_jerk_edit[_AXIS(N)])
|
||||
@@ -479,9 +481,10 @@ void menu_backlash();
|
||||
#else
|
||||
#define EDIT_JERK_C() EDIT_ITEM_FAST(float52sign, MSG_VC_JERK, &planner.max_jerk.c, 0.1f, max_jerk_edit.c)
|
||||
#endif
|
||||
LINEAR_AXIS_CODE(
|
||||
NUM_AXIS_CODE(
|
||||
EDIT_JERK(A), EDIT_JERK(B), EDIT_JERK_C(),
|
||||
EDIT_JERK(I), EDIT_JERK(J), EDIT_JERK(K)
|
||||
EDIT_JERK(I), EDIT_JERK(J), EDIT_JERK(K),
|
||||
EDIT_JERK(U), EDIT_JERK(V), EDIT_JERK(W)
|
||||
);
|
||||
|
||||
#if HAS_EXTRUDERS
|
||||
@@ -524,9 +527,10 @@ void menu_advanced_steps_per_mm() {
|
||||
BACK_ITEM(MSG_ADVANCED_SETTINGS);
|
||||
|
||||
#define EDIT_QSTEPS(Q) EDIT_ITEM_FAST(float61, MSG_##Q##_STEPS, &planner.settings.axis_steps_per_mm[_AXIS(Q)], 5, 9999, []{ planner.refresh_positioning(); })
|
||||
LINEAR_AXIS_CODE(
|
||||
NUM_AXIS_CODE(
|
||||
EDIT_QSTEPS(A), EDIT_QSTEPS(B), EDIT_QSTEPS(C),
|
||||
EDIT_QSTEPS(I), EDIT_QSTEPS(J), EDIT_QSTEPS(K)
|
||||
EDIT_QSTEPS(I), EDIT_QSTEPS(J), EDIT_QSTEPS(K),
|
||||
EDIT_QSTEPS(U), EDIT_QSTEPS(V), EDIT_QSTEPS(W)
|
||||
);
|
||||
|
||||
#if ENABLED(DISTINCT_E_FACTORS)
|
||||
|
||||
@@ -66,6 +66,15 @@ void menu_backlash() {
|
||||
#if HAS_K_AXIS && _CAN_CALI(K)
|
||||
EDIT_BACKLASH_DISTANCE(K);
|
||||
#endif
|
||||
#if HAS_U_AXIS && _CAN_CALI(U)
|
||||
EDIT_BACKLASH_DISTANCE(U);
|
||||
#endif
|
||||
#if HAS_V_AXIS && _CAN_CALI(V)
|
||||
EDIT_BACKLASH_DISTANCE(V);
|
||||
#endif
|
||||
#if HAS_W_AXIS && _CAN_CALI(W)
|
||||
EDIT_BACKLASH_DISTANCE(W);
|
||||
#endif
|
||||
|
||||
#ifdef BACKLASH_SMOOTHING_MM
|
||||
editable.decimal = backlash.get_smoothing_mm();
|
||||
|
||||
@@ -106,6 +106,15 @@ void lcd_move_x() { _lcd_move_xyz(GET_TEXT(MSG_MOVE_X), X_AXIS); }
|
||||
#if HAS_K_AXIS
|
||||
void lcd_move_k() { _lcd_move_xyz(GET_TEXT(MSG_MOVE_K), K_AXIS); }
|
||||
#endif
|
||||
#if HAS_U_AXIS
|
||||
void lcd_move_u() { _lcd_move_xyz(GET_TEXT(MSG_MOVE_U), U_AXIS); }
|
||||
#endif
|
||||
#if HAS_V_AXIS
|
||||
void lcd_move_v() { _lcd_move_xyz(GET_TEXT(MSG_MOVE_V), V_AXIS); }
|
||||
#endif
|
||||
#if HAS_W_AXIS
|
||||
void lcd_move_w() { _lcd_move_xyz(GET_TEXT(MSG_MOVE_W), W_AXIS); }
|
||||
#endif
|
||||
|
||||
#if E_MANUAL
|
||||
|
||||
@@ -263,6 +272,15 @@ void menu_move() {
|
||||
#if HAS_K_AXIS
|
||||
SUBMENU(MSG_MOVE_K, []{ _menu_move_distance(K_AXIS, lcd_move_k); });
|
||||
#endif
|
||||
#if HAS_U_AXIS
|
||||
SUBMENU(MSG_MOVE_U, []{ _menu_move_distance(U_AXIS, lcd_move_u); });
|
||||
#endif
|
||||
#if HAS_V_AXIS
|
||||
SUBMENU(MSG_MOVE_V, []{ _menu_move_distance(V_AXIS, lcd_move_v); });
|
||||
#endif
|
||||
#if HAS_W_AXIS
|
||||
SUBMENU(MSG_MOVE_W, []{ _menu_move_distance(W_AXIS, lcd_move_w); });
|
||||
#endif
|
||||
}
|
||||
else
|
||||
GCODES_ITEM(MSG_AUTO_HOME, G28_STR);
|
||||
@@ -354,6 +372,15 @@ void menu_move() {
|
||||
#if HAS_K_AXIS
|
||||
GCODES_ITEM_N(K_AXIS, MSG_AUTO_HOME_A, PSTR("G28" STR_K));
|
||||
#endif
|
||||
#if HAS_U_AXIS
|
||||
GCODES_ITEM_N(U_AXIS, MSG_AUTO_HOME_A, PSTR("G28" STR_U));
|
||||
#endif
|
||||
#if HAS_V_AXIS
|
||||
GCODES_ITEM_N(V_AXIS, MSG_AUTO_HOME_A, PSTR("G28" STR_V));
|
||||
#endif
|
||||
#if HAS_W_AXIS
|
||||
GCODES_ITEM_N(W_AXIS, MSG_AUTO_HOME_A, PSTR("G28" STR_W));
|
||||
#endif
|
||||
|
||||
END_MENU();
|
||||
}
|
||||
@@ -407,6 +434,15 @@ void menu_motion() {
|
||||
#if HAS_K_AXIS
|
||||
GCODES_ITEM_N(K_AXIS, MSG_AUTO_HOME_A, PSTR("G28" STR_K));
|
||||
#endif
|
||||
#if HAS_U_AXIS
|
||||
GCODES_ITEM_N(U_AXIS, MSG_AUTO_HOME_A, PSTR("G28" STR_U));
|
||||
#endif
|
||||
#if HAS_V_AXIS
|
||||
GCODES_ITEM_N(V_AXIS, MSG_AUTO_HOME_A, PSTR("G28" STR_V));
|
||||
#endif
|
||||
#if HAS_W_AXIS
|
||||
GCODES_ITEM_N(W_AXIS, MSG_AUTO_HOME_A, PSTR("G28" STR_W));
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
@@ -134,6 +134,9 @@ void menu_tmc_current() {
|
||||
TERN_( I_SENSORLESS, TMC_EDIT_STORED_SGT(I));
|
||||
TERN_( J_SENSORLESS, TMC_EDIT_STORED_SGT(J));
|
||||
TERN_( K_SENSORLESS, TMC_EDIT_STORED_SGT(K));
|
||||
TERN_( U_SENSORLESS, TMC_EDIT_STORED_SGT(U));
|
||||
TERN_( V_SENSORLESS, TMC_EDIT_STORED_SGT(V));
|
||||
TERN_( W_SENSORLESS, TMC_EDIT_STORED_SGT(W));
|
||||
END_MENU();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user