|
|
@ -764,8 +764,7 @@ void enqueue_and_echo_command_now(const char* cmd) {
|
|
|
|
bool enqueue_and_echo_command(const char* cmd, bool say_ok/*=false*/) {
|
|
|
|
bool enqueue_and_echo_command(const char* cmd, bool say_ok/*=false*/) {
|
|
|
|
if (_enqueuecommand(cmd, say_ok)) {
|
|
|
|
if (_enqueuecommand(cmd, say_ok)) {
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOPGM(MSG_Enqueueing);
|
|
|
|
SERIAL_ECHOPAIR(MSG_Enqueueing, cmd);
|
|
|
|
SERIAL_ECHO(cmd);
|
|
|
|
|
|
|
|
SERIAL_ECHOLNPGM("\"");
|
|
|
|
SERIAL_ECHOLNPGM("\"");
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1354,8 +1353,8 @@ static void set_axis_is_at_home(AxisEnum axis) {
|
|
|
|
float homeposition[XYZ];
|
|
|
|
float homeposition[XYZ];
|
|
|
|
LOOP_XYZ(i) homeposition[i] = LOGICAL_POSITION(base_home_pos(i), i);
|
|
|
|
LOOP_XYZ(i) homeposition[i] = LOGICAL_POSITION(base_home_pos(i), i);
|
|
|
|
|
|
|
|
|
|
|
|
// SERIAL_ECHOPGM("homeposition[x]= "); SERIAL_ECHO(homeposition[0]);
|
|
|
|
// SERIAL_ECHOPAIR("homeposition X:", homeposition[X_AXIS]);
|
|
|
|
// SERIAL_ECHOPGM("homeposition[y]= "); SERIAL_ECHOLN(homeposition[1]);
|
|
|
|
// SERIAL_ECHOLNPAIR(" Y:", homeposition[Y_AXIS]);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Works out real Homeposition angles using inverse kinematics,
|
|
|
|
* Works out real Homeposition angles using inverse kinematics,
|
|
|
@ -1364,8 +1363,8 @@ static void set_axis_is_at_home(AxisEnum axis) {
|
|
|
|
inverse_kinematics(homeposition);
|
|
|
|
inverse_kinematics(homeposition);
|
|
|
|
forward_kinematics_SCARA(delta[A_AXIS], delta[B_AXIS]);
|
|
|
|
forward_kinematics_SCARA(delta[A_AXIS], delta[B_AXIS]);
|
|
|
|
|
|
|
|
|
|
|
|
// SERIAL_ECHOPAIR("Delta X=", cartes[X_AXIS]);
|
|
|
|
// SERIAL_ECHOPAIR("Cartesian X:", cartes[X_AXIS]);
|
|
|
|
// SERIAL_ECHOPGM(" Delta Y="); SERIAL_ECHOLN(cartes[Y_AXIS]);
|
|
|
|
// SERIAL_ECHOLNPAIR(" Y:", cartes[Y_AXIS]);
|
|
|
|
|
|
|
|
|
|
|
|
current_position[axis] = LOGICAL_POSITION(cartes[axis], axis);
|
|
|
|
current_position[axis] = LOGICAL_POSITION(cartes[axis], axis);
|
|
|
|
|
|
|
|
|
|
|
@ -2019,17 +2018,11 @@ static void clean_up_after_endstop_or_probe_move() {
|
|
|
|
feedrate_mm_s = XY_PROBE_FEEDRATE_MM_S;
|
|
|
|
feedrate_mm_s = XY_PROBE_FEEDRATE_MM_S;
|
|
|
|
do_blocking_move_to_xy(x - (X_PROBE_OFFSET_FROM_EXTRUDER), y - (Y_PROBE_OFFSET_FROM_EXTRUDER));
|
|
|
|
do_blocking_move_to_xy(x - (X_PROBE_OFFSET_FROM_EXTRUDER), y - (Y_PROBE_OFFSET_FROM_EXTRUDER));
|
|
|
|
|
|
|
|
|
|
|
|
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
|
|
|
|
|
|
|
if (DEBUGGING(LEVELING)) SERIAL_ECHOPGM("> ");
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
if (DEPLOY_PROBE()) return NAN;
|
|
|
|
if (DEPLOY_PROBE()) return NAN;
|
|
|
|
|
|
|
|
|
|
|
|
float measured_z = run_z_probe();
|
|
|
|
float measured_z = run_z_probe();
|
|
|
|
|
|
|
|
|
|
|
|
if (stow) {
|
|
|
|
if (stow) {
|
|
|
|
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
|
|
|
|
|
|
|
if (DEBUGGING(LEVELING)) SERIAL_ECHOPGM("> ");
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
if (STOW_PROBE()) return NAN;
|
|
|
|
if (STOW_PROBE()) return NAN;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
else {
|
|
|
@ -2203,12 +2196,7 @@ static void homeaxis(AxisEnum axis) {
|
|
|
|
|
|
|
|
|
|
|
|
// Homing Z towards the bed? Deploy the Z probe or endstop.
|
|
|
|
// Homing Z towards the bed? Deploy the Z probe or endstop.
|
|
|
|
#if HOMING_Z_WITH_PROBE
|
|
|
|
#if HOMING_Z_WITH_PROBE
|
|
|
|
if (axis == Z_AXIS) {
|
|
|
|
if (axis == Z_AXIS && DEPLOY_PROBE()) return;
|
|
|
|
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
|
|
|
|
|
|
|
if (DEBUGGING(LEVELING)) SERIAL_ECHOPGM("> ");
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
if (DEPLOY_PROBE()) return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
// Set a flag for Z motor locking
|
|
|
|
// Set a flag for Z motor locking
|
|
|
@ -2286,12 +2274,7 @@ static void homeaxis(AxisEnum axis) {
|
|
|
|
|
|
|
|
|
|
|
|
// Put away the Z probe
|
|
|
|
// Put away the Z probe
|
|
|
|
#if HOMING_Z_WITH_PROBE
|
|
|
|
#if HOMING_Z_WITH_PROBE
|
|
|
|
if (axis == Z_AXIS) {
|
|
|
|
if (axis == Z_AXIS && STOW_PROBE()) return;
|
|
|
|
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
|
|
|
|
|
|
|
if (DEBUGGING(LEVELING)) SERIAL_ECHOPGM("> ");
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
if (STOW_PROBE()) return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
|
|
|
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
|
|
@ -2416,8 +2399,7 @@ void gcode_get_destination() {
|
|
|
|
|
|
|
|
|
|
|
|
void unknown_command_error() {
|
|
|
|
void unknown_command_error() {
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOPGM(MSG_UNKNOWN_COMMAND);
|
|
|
|
SERIAL_ECHOPAIR(MSG_UNKNOWN_COMMAND, current_command);
|
|
|
|
SERIAL_ECHO(current_command);
|
|
|
|
|
|
|
|
SERIAL_ECHOLNPGM("\"");
|
|
|
|
SERIAL_ECHOLNPGM("\"");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -3713,10 +3695,7 @@ inline void gcode_G28() {
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef Z_PROBE_END_SCRIPT
|
|
|
|
#ifdef Z_PROBE_END_SCRIPT
|
|
|
|
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
|
|
|
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
|
|
|
if (DEBUGGING(LEVELING)) {
|
|
|
|
if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPAIR("Z Probe End Script: ", Z_PROBE_END_SCRIPT);
|
|
|
|
SERIAL_ECHOPGM("Z Probe End Script: ");
|
|
|
|
|
|
|
|
SERIAL_ECHOLNPGM(Z_PROBE_END_SCRIPT);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
enqueue_and_echo_commands_P(PSTR(Z_PROBE_END_SCRIPT));
|
|
|
|
enqueue_and_echo_commands_P(PSTR(Z_PROBE_END_SCRIPT));
|
|
|
|
stepper.synchronize();
|
|
|
|
stepper.synchronize();
|
|
|
@ -4002,8 +3981,7 @@ inline void gcode_M31() {
|
|
|
|
lcd_setstatus(buffer);
|
|
|
|
lcd_setstatus(buffer);
|
|
|
|
|
|
|
|
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOPGM("Print time: ");
|
|
|
|
SERIAL_ECHOLNPAIR("Print time: ", buffer);
|
|
|
|
SERIAL_ECHOLN(buffer);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
thermalManager.autotempShutdown();
|
|
|
|
thermalManager.autotempShutdown();
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -5358,8 +5336,7 @@ inline void gcode_M206() {
|
|
|
|
endstop_adj[i] = code_value_axis_units(i);
|
|
|
|
endstop_adj[i] = code_value_axis_units(i);
|
|
|
|
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
|
|
|
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
|
|
|
if (DEBUGGING(LEVELING)) {
|
|
|
|
if (DEBUGGING(LEVELING)) {
|
|
|
|
SERIAL_ECHOPGM("endstop_adj[");
|
|
|
|
SERIAL_ECHOPAIR("endstop_adj[", axis_codes[i]);
|
|
|
|
SERIAL_ECHO(axis_codes[i]);
|
|
|
|
|
|
|
|
SERIAL_ECHOLNPAIR("] = ", endstop_adj[i]);
|
|
|
|
SERIAL_ECHOLNPAIR("] = ", endstop_adj[i]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
@ -5442,16 +5419,17 @@ inline void gcode_M211() {
|
|
|
|
if (code_seen('S')) soft_endstops_enabled = code_value_bool();
|
|
|
|
if (code_seen('S')) soft_endstops_enabled = code_value_bool();
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#if ENABLED(min_software_endstops) || ENABLED(max_software_endstops)
|
|
|
|
#if ENABLED(min_software_endstops) || ENABLED(max_software_endstops)
|
|
|
|
SERIAL_ECHOPGM(MSG_SOFT_ENDSTOPS ": ");
|
|
|
|
SERIAL_ECHOPGM(MSG_SOFT_ENDSTOPS);
|
|
|
|
serialprintPGM(soft_endstops_enabled ? PSTR(MSG_ON) : PSTR(MSG_OFF));
|
|
|
|
serialprintPGM(soft_endstops_enabled ? PSTR(MSG_ON) : PSTR(MSG_OFF));
|
|
|
|
#else
|
|
|
|
#else
|
|
|
|
SERIAL_ECHOPGM(MSG_SOFT_ENDSTOPS ": " MSG_OFF);
|
|
|
|
SERIAL_ECHOPGM(MSG_SOFT_ENDSTOPS);
|
|
|
|
|
|
|
|
SERIAL_ECHOPGM(MSG_OFF);
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
SERIAL_ECHOPGM(" " MSG_SOFT_MIN ": ");
|
|
|
|
SERIAL_ECHOPGM(MSG_SOFT_MIN);
|
|
|
|
SERIAL_ECHOPAIR( MSG_X, soft_endstop_min[X_AXIS]);
|
|
|
|
SERIAL_ECHOPAIR( MSG_X, soft_endstop_min[X_AXIS]);
|
|
|
|
SERIAL_ECHOPAIR(" " MSG_Y, soft_endstop_min[Y_AXIS]);
|
|
|
|
SERIAL_ECHOPAIR(" " MSG_Y, soft_endstop_min[Y_AXIS]);
|
|
|
|
SERIAL_ECHOPAIR(" " MSG_Z, soft_endstop_min[Z_AXIS]);
|
|
|
|
SERIAL_ECHOPAIR(" " MSG_Z, soft_endstop_min[Z_AXIS]);
|
|
|
|
SERIAL_ECHOPGM(" " MSG_SOFT_MAX ": ");
|
|
|
|
SERIAL_ECHOPGM(MSG_SOFT_MAX);
|
|
|
|
SERIAL_ECHOPAIR( MSG_X, soft_endstop_max[X_AXIS]);
|
|
|
|
SERIAL_ECHOPAIR( MSG_X, soft_endstop_max[X_AXIS]);
|
|
|
|
SERIAL_ECHOPAIR(" " MSG_Y, soft_endstop_max[Y_AXIS]);
|
|
|
|
SERIAL_ECHOPAIR(" " MSG_Y, soft_endstop_max[Y_AXIS]);
|
|
|
|
SERIAL_ECHOLNPAIR(" " MSG_Z, soft_endstop_max[Z_AXIS]);
|
|
|
|
SERIAL_ECHOLNPAIR(" " MSG_Z, soft_endstop_max[Z_AXIS]);
|
|
|
@ -5569,17 +5547,14 @@ inline void gcode_M226() {
|
|
|
|
MOVE_SERVO(servo_index, code_value_int());
|
|
|
|
MOVE_SERVO(servo_index, code_value_int());
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOPGM(" Servo ");
|
|
|
|
SERIAL_ECHOPAIR(" Servo ", servo_index);
|
|
|
|
SERIAL_ECHO(servo_index);
|
|
|
|
SERIAL_ECHOLNPAIR(": ", servo[servo_index].read());
|
|
|
|
SERIAL_ECHOPGM(": ");
|
|
|
|
|
|
|
|
SERIAL_ECHOLN(servo[servo_index].read());
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
SERIAL_ERROR_START;
|
|
|
|
SERIAL_ERROR_START;
|
|
|
|
SERIAL_ERROR("Servo ");
|
|
|
|
SERIAL_ECHOPAIR("Servo ", servo_index);
|
|
|
|
SERIAL_ERROR(servo_index);
|
|
|
|
SERIAL_ECHOLNPGM(" out of range");
|
|
|
|
SERIAL_ERRORLN(" out of range");
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -5635,19 +5610,14 @@ inline void gcode_M226() {
|
|
|
|
thermalManager.updatePID();
|
|
|
|
thermalManager.updatePID();
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
#if ENABLED(PID_PARAMS_PER_HOTEND)
|
|
|
|
#if ENABLED(PID_PARAMS_PER_HOTEND)
|
|
|
|
SERIAL_ECHOPGM(" e:"); // specify extruder in serial output
|
|
|
|
SERIAL_ECHOPAIR(" e:", e); // specify extruder in serial output
|
|
|
|
SERIAL_ECHO(e);
|
|
|
|
|
|
|
|
#endif // PID_PARAMS_PER_HOTEND
|
|
|
|
#endif // PID_PARAMS_PER_HOTEND
|
|
|
|
SERIAL_ECHOPGM(" p:");
|
|
|
|
SERIAL_ECHOPAIR(" p:", PID_PARAM(Kp, e));
|
|
|
|
SERIAL_ECHO(PID_PARAM(Kp, e));
|
|
|
|
SERIAL_ECHOPAIR(" i:", unscalePID_i(PID_PARAM(Ki, e)));
|
|
|
|
SERIAL_ECHOPGM(" i:");
|
|
|
|
SERIAL_ECHOPAIR(" d:", unscalePID_d(PID_PARAM(Kd, e)));
|
|
|
|
SERIAL_ECHO(unscalePID_i(PID_PARAM(Ki, e)));
|
|
|
|
|
|
|
|
SERIAL_ECHOPGM(" d:");
|
|
|
|
|
|
|
|
SERIAL_ECHO(unscalePID_d(PID_PARAM(Kd, e)));
|
|
|
|
|
|
|
|
#if ENABLED(PID_EXTRUSION_SCALING)
|
|
|
|
#if ENABLED(PID_EXTRUSION_SCALING)
|
|
|
|
SERIAL_ECHOPGM(" c:");
|
|
|
|
|
|
|
|
//Kc does not have scaling applied above, or in resetting defaults
|
|
|
|
//Kc does not have scaling applied above, or in resetting defaults
|
|
|
|
SERIAL_ECHO(PID_PARAM(Kc, e));
|
|
|
|
SERIAL_ECHOPAIR(" c:", PID_PARAM(Kc, e));
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
SERIAL_EOL;
|
|
|
|
SERIAL_EOL;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -5669,12 +5639,9 @@ inline void gcode_M226() {
|
|
|
|
thermalManager.updatePID();
|
|
|
|
thermalManager.updatePID();
|
|
|
|
|
|
|
|
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOPGM(" p:");
|
|
|
|
SERIAL_ECHOPAIR(" p:", thermalManager.bedKp);
|
|
|
|
SERIAL_ECHO(thermalManager.bedKp);
|
|
|
|
SERIAL_ECHOPAIR(" i:", unscalePID_i(thermalManager.bedKi));
|
|
|
|
SERIAL_ECHOPGM(" i:");
|
|
|
|
SERIAL_ECHOLNPAIR(" d:", unscalePID_d(thermalManager.bedKd));
|
|
|
|
SERIAL_ECHO(unscalePID_i(thermalManager.bedKi));
|
|
|
|
|
|
|
|
SERIAL_ECHOPGM(" d:");
|
|
|
|
|
|
|
|
SERIAL_ECHOLN(unscalePID_d(thermalManager.bedKd));
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endif // PIDTEMPBED
|
|
|
|
#endif // PIDTEMPBED
|
|
|
@ -6138,11 +6105,9 @@ inline void gcode_M503() {
|
|
|
|
SERIAL_ECHO(zprobe_zoffset);
|
|
|
|
SERIAL_ECHO(zprobe_zoffset);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
SERIAL_ECHOPGM(MSG_Z_MIN);
|
|
|
|
SERIAL_ECHOPAIR(MSG_Z_MIN, Z_PROBE_OFFSET_RANGE_MIN);
|
|
|
|
SERIAL_ECHO(Z_PROBE_OFFSET_RANGE_MIN);
|
|
|
|
|
|
|
|
SERIAL_CHAR(' ');
|
|
|
|
SERIAL_CHAR(' ');
|
|
|
|
SERIAL_ECHOPGM(MSG_Z_MAX);
|
|
|
|
SERIAL_ECHOPAIR(MSG_Z_MAX, Z_PROBE_OFFSET_RANGE_MAX);
|
|
|
|
SERIAL_ECHO(Z_PROBE_OFFSET_RANGE_MAX);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
else {
|
|
|
@ -6863,8 +6828,7 @@ void tool_change(const uint8_t tmp_extruder, const float fr_mm_s/*=0.0*/, bool n
|
|
|
|
#endif // HOTENDS <= 1
|
|
|
|
#endif // HOTENDS <= 1
|
|
|
|
|
|
|
|
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOPGM(MSG_ACTIVE_EXTRUDER);
|
|
|
|
SERIAL_ECHOLNPAIR(MSG_ACTIVE_EXTRUDER, (int)active_extruder);
|
|
|
|
SERIAL_PROTOCOLLN((int)active_extruder);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif //!MIXING_EXTRUDER || MIXING_VIRTUAL_TOOLS <= 1
|
|
|
|
#endif //!MIXING_EXTRUDER || MIXING_VIRTUAL_TOOLS <= 1
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -7685,13 +7649,13 @@ void ok_to_send() {
|
|
|
|
- sq(delta_tower3_y - cartesian[Y_AXIS])
|
|
|
|
- sq(delta_tower3_y - cartesian[Y_AXIS])
|
|
|
|
) + cartesian[Z_AXIS];
|
|
|
|
) + cartesian[Z_AXIS];
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
SERIAL_ECHOPGM("cartesian x="); SERIAL_ECHO(cartesian[X_AXIS]);
|
|
|
|
SERIAL_ECHOPAIR("cartesian x=", cartesian[X_AXIS]);
|
|
|
|
SERIAL_ECHOPGM(" y="); SERIAL_ECHO(cartesian[Y_AXIS]);
|
|
|
|
SERIAL_ECHOPAIR(" y=", cartesian[Y_AXIS]);
|
|
|
|
SERIAL_ECHOPGM(" z="); SERIAL_ECHOLN(cartesian[Z_AXIS]);
|
|
|
|
SERIAL_ECHOLNPAIR(" z=", cartesian[Z_AXIS]);
|
|
|
|
|
|
|
|
|
|
|
|
SERIAL_ECHOPGM("delta a="); SERIAL_ECHO(delta[A_AXIS]);
|
|
|
|
SERIAL_ECHOPAIR("delta a=", delta[A_AXIS]);
|
|
|
|
SERIAL_ECHOPGM(" b="); SERIAL_ECHO(delta[B_AXIS]);
|
|
|
|
SERIAL_ECHOPAIR(" b=", delta[B_AXIS]);
|
|
|
|
SERIAL_ECHOPGM(" c="); SERIAL_ECHOLN(delta[C_AXIS]);
|
|
|
|
SERIAL_ECHOLNPAIR(" c=", delta[C_AXIS]);
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -7806,19 +7770,19 @@ void ok_to_send() {
|
|
|
|
delta[Z_AXIS] += offset;
|
|
|
|
delta[Z_AXIS] += offset;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
SERIAL_ECHOPGM("grid_x="); SERIAL_ECHO(grid_x);
|
|
|
|
SERIAL_ECHOPAIR("grid_x=", grid_x);
|
|
|
|
SERIAL_ECHOPGM(" grid_y="); SERIAL_ECHO(grid_y);
|
|
|
|
SERIAL_ECHOPAIR(" grid_y=", grid_y);
|
|
|
|
SERIAL_ECHOPGM(" floor_x="); SERIAL_ECHO(floor_x);
|
|
|
|
SERIAL_ECHOPAIR(" floor_x=", floor_x);
|
|
|
|
SERIAL_ECHOPGM(" floor_y="); SERIAL_ECHO(floor_y);
|
|
|
|
SERIAL_ECHOPAIR(" floor_y=", floor_y);
|
|
|
|
SERIAL_ECHOPGM(" ratio_x="); SERIAL_ECHO(ratio_x);
|
|
|
|
SERIAL_ECHOPAIR(" ratio_x=", ratio_x);
|
|
|
|
SERIAL_ECHOPGM(" ratio_y="); SERIAL_ECHO(ratio_y);
|
|
|
|
SERIAL_ECHOPAIR(" ratio_y=", ratio_y);
|
|
|
|
SERIAL_ECHOPGM(" z1="); SERIAL_ECHO(z1);
|
|
|
|
SERIAL_ECHOPAIR(" z1=", z1);
|
|
|
|
SERIAL_ECHOPGM(" z2="); SERIAL_ECHO(z2);
|
|
|
|
SERIAL_ECHOPAIR(" z2=", z2);
|
|
|
|
SERIAL_ECHOPGM(" z3="); SERIAL_ECHO(z3);
|
|
|
|
SERIAL_ECHOPAIR(" z3=", z3);
|
|
|
|
SERIAL_ECHOPGM(" z4="); SERIAL_ECHO(z4);
|
|
|
|
SERIAL_ECHOPAIR(" z4=", z4);
|
|
|
|
SERIAL_ECHOPGM(" left="); SERIAL_ECHO(left);
|
|
|
|
SERIAL_ECHOPAIR(" left=", left);
|
|
|
|
SERIAL_ECHOPGM(" right="); SERIAL_ECHO(right);
|
|
|
|
SERIAL_ECHOPAIR(" right=", right);
|
|
|
|
SERIAL_ECHOPGM(" offset="); SERIAL_ECHOLN(offset);
|
|
|
|
SERIAL_ECHOLNPAIR(" offset=", offset);
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif // AUTO_BED_LEVELING_NONLINEAR
|
|
|
|
#endif // AUTO_BED_LEVELING_NONLINEAR
|
|
|
@ -7910,9 +7874,9 @@ void mesh_line_to_destination(float fr_mm_s, uint8_t x_splits = 0xff, uint8_t y_
|
|
|
|
int steps = max(1, int(delta_segments_per_second * seconds));
|
|
|
|
int steps = max(1, int(delta_segments_per_second * seconds));
|
|
|
|
float inv_steps = 1.0/steps;
|
|
|
|
float inv_steps = 1.0/steps;
|
|
|
|
|
|
|
|
|
|
|
|
// SERIAL_ECHOPGM("mm="); SERIAL_ECHO(cartesian_mm);
|
|
|
|
// SERIAL_ECHOPAIR("mm=", cartesian_mm);
|
|
|
|
// SERIAL_ECHOPGM(" seconds="); SERIAL_ECHO(seconds);
|
|
|
|
// SERIAL_ECHOPAIR(" seconds=", seconds);
|
|
|
|
// SERIAL_ECHOPGM(" steps="); SERIAL_ECHOLN(steps);
|
|
|
|
// SERIAL_ECHOLNPAIR(" steps=", steps);
|
|
|
|
|
|
|
|
|
|
|
|
for (int s = 1; s <= steps; s++) {
|
|
|
|
for (int s = 1; s <= steps; s++) {
|
|
|
|
|
|
|
|
|
|
|
@ -8263,24 +8227,24 @@ void prepare_move_to_destination() {
|
|
|
|
|
|
|
|
|
|
|
|
float a_sin, a_cos, b_sin, b_cos;
|
|
|
|
float a_sin, a_cos, b_sin, b_cos;
|
|
|
|
|
|
|
|
|
|
|
|
//SERIAL_ECHOPGM("f_delta x="); SERIAL_ECHO(a);
|
|
|
|
|
|
|
|
//SERIAL_ECHOPGM(" y="); SERIAL_ECHO(b);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
a_sin = sin(RADIANS(a)) * L1;
|
|
|
|
a_sin = sin(RADIANS(a)) * L1;
|
|
|
|
a_cos = cos(RADIANS(a)) * L1;
|
|
|
|
a_cos = cos(RADIANS(a)) * L1;
|
|
|
|
b_sin = sin(RADIANS(b)) * L2;
|
|
|
|
b_sin = sin(RADIANS(b)) * L2;
|
|
|
|
b_cos = cos(RADIANS(b)) * L2;
|
|
|
|
b_cos = cos(RADIANS(b)) * L2;
|
|
|
|
|
|
|
|
|
|
|
|
//SERIAL_ECHOPGM(" a_sin="); SERIAL_ECHO(a_sin);
|
|
|
|
|
|
|
|
//SERIAL_ECHOPGM(" a_cos="); SERIAL_ECHO(a_cos);
|
|
|
|
|
|
|
|
//SERIAL_ECHOPGM(" b_sin="); SERIAL_ECHO(b_sin);
|
|
|
|
|
|
|
|
//SERIAL_ECHOPGM(" b_cos="); SERIAL_ECHOLN(b_cos);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cartes[X_AXIS] = a_cos + b_cos + SCARA_OFFSET_X; //theta
|
|
|
|
cartes[X_AXIS] = a_cos + b_cos + SCARA_OFFSET_X; //theta
|
|
|
|
cartes[Y_AXIS] = a_sin + b_sin + SCARA_OFFSET_Y; //theta+phi
|
|
|
|
cartes[Y_AXIS] = a_sin + b_sin + SCARA_OFFSET_Y; //theta+phi
|
|
|
|
|
|
|
|
|
|
|
|
//SERIAL_ECHOPGM(" cartes[X_AXIS]="); SERIAL_ECHO(cartes[X_AXIS]);
|
|
|
|
/*
|
|
|
|
//SERIAL_ECHOPGM(" cartes[Y_AXIS]="); SERIAL_ECHOLN(cartes[Y_AXIS]);
|
|
|
|
SERIAL_ECHOPAIR("f_delta x=", a);
|
|
|
|
|
|
|
|
SERIAL_ECHOPAIR(" y=", b);
|
|
|
|
|
|
|
|
SERIAL_ECHOPAIR(" a_sin=", a_sin);
|
|
|
|
|
|
|
|
SERIAL_ECHOPAIR(" a_cos=", a_cos);
|
|
|
|
|
|
|
|
SERIAL_ECHOPAIR(" b_sin=", b_sin);
|
|
|
|
|
|
|
|
SERIAL_ECHOLNPAIR(" b_cos=", b_cos);
|
|
|
|
|
|
|
|
SERIAL_ECHOPAIR(" cartes[X_AXIS]=", cartes[X_AXIS]);
|
|
|
|
|
|
|
|
SERIAL_ECHOLNPAIR(" cartes[Y_AXIS]=", cartes[Y_AXIS]);
|
|
|
|
|
|
|
|
//*/
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void inverse_kinematics(const float cartesian[XYZ]) {
|
|
|
|
void inverse_kinematics(const float cartesian[XYZ]) {
|
|
|
@ -8771,25 +8735,21 @@ void setup() {
|
|
|
|
MCUSR = 0;
|
|
|
|
MCUSR = 0;
|
|
|
|
|
|
|
|
|
|
|
|
SERIAL_ECHOPGM(MSG_MARLIN);
|
|
|
|
SERIAL_ECHOPGM(MSG_MARLIN);
|
|
|
|
SERIAL_ECHOLNPGM(" " SHORT_BUILD_VERSION);
|
|
|
|
SERIAL_CHAR(' ');
|
|
|
|
|
|
|
|
SERIAL_ECHOLNPGM(SHORT_BUILD_VERSION);
|
|
|
|
|
|
|
|
SERIAL_EOL;
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef STRING_DISTRIBUTION_DATE
|
|
|
|
#if defined(STRING_DISTRIBUTION_DATE) && defined(STRING_CONFIG_H_AUTHOR)
|
|
|
|
#ifdef STRING_CONFIG_H_AUTHOR
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOPGM(MSG_CONFIGURATION_VER);
|
|
|
|
SERIAL_ECHOPGM(MSG_CONFIGURATION_VER);
|
|
|
|
SERIAL_ECHOPGM(STRING_DISTRIBUTION_DATE);
|
|
|
|
SERIAL_ECHOPGM(STRING_DISTRIBUTION_DATE);
|
|
|
|
SERIAL_ECHOLNPGM(MSG_AUTHOR STRING_CONFIG_H_AUTHOR);
|
|
|
|
SERIAL_ECHOPGM(MSG_AUTHOR);
|
|
|
|
SERIAL_ECHOLNPGM("Compiled: " __DATE__);
|
|
|
|
SERIAL_ECHOLNPGM(STRING_CONFIG_H_AUTHOR);
|
|
|
|
#endif
|
|
|
|
SERIAL_ECHOPGM("Compiled: ");
|
|
|
|
|
|
|
|
SERIAL_ECHOLNPGM(__DATE__);
|
|
|
|
|
|
|
|
#endif // STRING_CONFIG_H_AUTHOR
|
|
|
|
|
|
|
|
#endif // STRING_DISTRIBUTION_DATE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOPGM(MSG_FREE_MEMORY);
|
|
|
|
SERIAL_ECHOPAIR(MSG_FREE_MEMORY, freeMemory());
|
|
|
|
SERIAL_ECHO(freeMemory());
|
|
|
|
SERIAL_ECHOLNPAIR(MSG_PLANNER_BUFFER_BYTES, (int)sizeof(block_t)*BLOCK_BUFFER_SIZE);
|
|
|
|
SERIAL_ECHOPGM(MSG_PLANNER_BUFFER_BYTES);
|
|
|
|
|
|
|
|
SERIAL_ECHOLN((int)sizeof(block_t)*BLOCK_BUFFER_SIZE);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Send "ok" after commands by default
|
|
|
|
// Send "ok" after commands by default
|
|
|
|
for (int8_t i = 0; i < BUFSIZE; i++) send_ok[i] = true;
|
|
|
|
for (int8_t i = 0; i < BUFSIZE; i++) send_ok[i] = true;
|
|
|
|