Add more parameters to M240

Co-Authored-By: shitcreek <45380455+shitcreek@users.noreply.github.com>
This commit is contained in:
Scott Lahteine 2019-02-20 14:51:26 -06:00
parent a43e892fb5
commit 80359c9937

View File

@ -76,6 +76,9 @@
* configured position, delay, and retract length. * configured position, delay, and retract length.
* *
* PHOTO_POSITION parameters: * PHOTO_POSITION parameters:
* A - X offset to the return position
* B - Y offset to the return position
* F - Override the XY movement feedrate
* R - Retract/recover length (current units) * R - Retract/recover length (current units)
* S - Retract/recover feedrate (mm/m) * S - Retract/recover feedrate (mm/m)
* X - Move to X before triggering the shutter * X - Move to X before triggering the shutter
@ -94,7 +97,11 @@ void GcodeSuite::M240() {
if (axis_unhomed_error()) return; if (axis_unhomed_error()) return;
const float old_pos[XYZ] = { current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS] }; const float old_pos[XYZ] = {
current_position[X_AXIS] + parser.linearval('A'),
current_position[Y_AXIS] + parser.linearval('B'),
current_position[Z_AXIS]
};
#ifdef PHOTO_RETRACT_MM #ifdef PHOTO_RETRACT_MM
constexpr float rfr = (MMS_TO_MMM( constexpr float rfr = (MMS_TO_MMM(
@ -111,6 +118,9 @@ void GcodeSuite::M240() {
e_move_m240(-rval, sval); e_move_m240(-rval, sval);
#endif #endif
float fr_mm_s = MMM_TO_MMS(parser.linearval('F'));
if (fr_mm_s) NOLESS(fr_mm_s, 10.0f);
constexpr float photo_position[XYZ] = PHOTO_POSITION; constexpr float photo_position[XYZ] = PHOTO_POSITION;
float raw[XYZ] = { float raw[XYZ] = {
parser.seenval('X') ? RAW_X_POSITION(parser.value_linear_units()) : photo_position[X_AXIS], parser.seenval('X') ? RAW_X_POSITION(parser.value_linear_units()) : photo_position[X_AXIS],
@ -118,7 +128,7 @@ void GcodeSuite::M240() {
(parser.seenval('Z') ? parser.value_linear_units() : photo_position[Z_AXIS]) + current_position[Z_AXIS] (parser.seenval('Z') ? parser.value_linear_units() : photo_position[Z_AXIS]) + current_position[Z_AXIS]
}; };
clamp_to_software_endstops(raw); clamp_to_software_endstops(raw);
do_blocking_move_to(raw); do_blocking_move_to(raw, fr_mm_s);
#ifdef PHOTO_SWITCH_POSITION #ifdef PHOTO_SWITCH_POSITION
constexpr float photo_switch_position[2] = PHOTO_SWITCH_POSITION; constexpr float photo_switch_position[2] = PHOTO_SWITCH_POSITION;
@ -152,7 +162,7 @@ void GcodeSuite::M240() {
#if PHOTO_DELAY_MS > 0 #if PHOTO_DELAY_MS > 0
safe_delay(parser.intval('P', PHOTO_DELAY_MS)); safe_delay(parser.intval('P', PHOTO_DELAY_MS));
#endif #endif
do_blocking_move_to(old_pos); do_blocking_move_to(old_pos, fr_mm_s);
#ifdef PHOTO_RETRACT_MM #ifdef PHOTO_RETRACT_MM
e_move_m240(rval, sval); e_move_m240(rval, sval);
#endif #endif