Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hook improvments and minor bug fixes #1

Merged
merged 13 commits into from
Aug 11, 2024
7 changes: 7 additions & 0 deletions config/hardware/probes/beacon_contact.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,14 @@ endstop_pin: probe:z_virtual_endstop
homing_retract_dist: 0

[beacon]
home_method: contact
home_method_when_homed: proximity
home_autocalibrate: unhomed
home_gcode_pre_x: _HOME_PRE_AXIS AXIS=X
home_gcode_post_x: _HOME_POST_AXIS AXIS=X
home_gcode_pre_y: _HOME_PRE_AXIS AXIS=Y
home_gcode_post_y: _HOME_POST_AXIS AXIS=Y
home_gcode_pre_xy: _HOME_XY STAGE=pre
home_gcode_post_xy: _HOME_XY STAGE=post
contact_activate_gcode: _CONTACT_MACRO STAGE=activate
contact_deactivate_gcode: _CONTACT_MACRO STAGE=deactivate
100 changes: 70 additions & 30 deletions macros/base/homing/beacon_homing_hooks.cfg
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
[gcode_macro _HOME_PRE_AXIS]
description: Perform actions prior to homing an axis
variable_saved_accel: 0
gcode:
{% set axis = params.AXIS %}
{% set bed_mesh_enabled = printer["gcode_macro _USER_VARIABLES"].bed_mesh_enabled %}
{% set homing_travel_accel = printer['gcode_macro _USER_VARIABLES'].homing_travel_accel %}
{% set kinematics = printer['configfile'].config['printer']['kinematics'] %}
{% set sensorless_homing_enabled = printer['gcode_macro _USER_VARIABLES'].sensorless_homing_enabled %}
{% set sensorless_current_factor = printer['gcode_macro _USER_VARIABLES'].sensorless_current_factor / 100 %}
{% set status_leds_enabled = printer["gcode_macro _USER_VARIABLES"].status_leds_enabled %}
{% set verbose = printer["gcode_macro _USER_VARIABLES"].verbose %}

{% set x_driver = printer["gcode_macro _USER_VARIABLES"].x_driver %}
Expand All @@ -24,29 +20,13 @@ gcode:
# reset parameters
{% set X, Y = False, False %}

# Cancel delayed gcode
UPDATE_DELAYED_GCODE ID=_set_status_leds_ready DURATION=0

# which axis has been requested for homing
{% if axis == 'X' %}
{% set X = True %}
{% elif axis == 'Y' %}
{% set Y = True %}
{% endif %}

{% if status_leds_enabled %}
STATUS_LEDS COLOR='HOMING'
{% endif %}

# Set the homing acceleration prior to any movement
SET_GCODE_VARIABLE MACRO=_HOME_PRE_AXIS VARIABLE=saved_accel VALUE={printer.toolhead.max_accel}
M204 S{homing_travel_accel}

{% if bed_mesh_enabled %}
BED_MESH_CLEAR
{% endif %}

G90

{% if sensorless_homing_enabled %}
{% if kinematics == 'corexy' %}
Expand Down Expand Up @@ -84,7 +64,6 @@ gcode:
{% set kinematics = printer['configfile'].config['printer']['kinematics'] %}
{% set sensorless_current_factor = printer['gcode_macro _USER_VARIABLES'].sensorless_current_factor / 100 %}
{% set sensorless_homing_enabled = printer['gcode_macro _USER_VARIABLES'].sensorless_homing_enabled %}
{% set status_leds_enabled = printer["gcode_macro _USER_VARIABLES"].status_leds_enabled %}

{% set x_homing_backoff, y_homing_backoff = printer['gcode_macro _USER_VARIABLES'].homing_backoff_distance_xy|map('float') %}

Expand Down Expand Up @@ -142,17 +121,78 @@ gcode:
{% endif %}
{% endif %}

# Reset acceleration values to what it was before
{% set saved_accel = printer["gcode_macro _HOME_PRE_AXIS"].saved_accel %}
SET_VELOCITY_LIMIT ACCEL={saved_accel}

# Set delayed gcode
UPDATE_DELAYED_GCODE ID=_set_status_leds_ready DURATION=0.5

[delayed_gcode _set_status_leds_ready]
[gcode_macro _HOME_XY]
description: Perform actions before or after homing x or y axis
variable_saved_accel: 0
gcode:
{% set stage = params.STAGE|lower %}

{% set bed_mesh_enabled = printer["gcode_macro _USER_VARIABLES"].bed_mesh_enabled %}
{% set homing_travel_accel = printer['gcode_macro _USER_VARIABLES'].homing_travel_accel %}
{% set status_leds_enabled = printer["gcode_macro _USER_VARIABLES"].status_leds_enabled %}

# reset parameters
{% set pre, post = False, False %}

# Which axis has been requested for homing
{% if stage == 'pre' %}
{% set pre = True %}
{% elif stage == 'post' %}
{% set post = True %}
{% else %}
{ action_raise_error('Unrecognized STAGE value, valid choices: pre, post') }
{% endif %}

{% if pre %}
# Set the homing acceleration prior to any movement
SET_GCODE_VARIABLE MACRO=_HOME_XY VARIABLE=saved_accel VALUE={printer.toolhead.max_accel}
M204 S{homing_travel_accel}

{% if bed_mesh_enabled %}
BED_MESH_CLEAR
{% endif %}

G90

{% if status_leds_enabled %}
STATUS_LEDS COLOR="homing"
{% endif %}
{% elif post %}
# Reset acceleration values to what it was before
{% set saved_accel = printer["gcode_macro _HOME_XY"].saved_accel %}
SET_VELOCITY_LIMIT ACCEL={saved_accel}

{% if status_leds_enabled %}
STATUS_LEDS COLOR="READY"
{% if status_leds_enabled %}
STATUS_LEDS COLOR="ready"
{% endif %}
{% endif %}

[gcode_macro _CONTACT_MACRO]
description: Perform actions before or after contact activate/deactivate
gcode:
{% set stage = params.STAGE|lower %}

{% set status_leds_enabled = printer["gcode_macro _USER_VARIABLES"].status_leds_enabled %}

# reset parameters
{% set activate, deactivate = False, False %}

# Which axis has been requested for homing
{% if stage == 'activate' %}
{% set activate = True %}
{% elif stage == 'deactivate' %}
{% set deactivate = True %}
{% else %}
{ action_raise_error('Unrecognized STAGE value, valid choices: activate, deactivate') }
{% endif %}

{% if activate %}
{% if status_leds_enabled %}
STATUS_LEDS COLOR="homing"
{% endif %}
{% elif deactivate %}
{% if status_leds_enabled %}
STATUS_LEDS COLOR="ready"
{% endif %}
{% endif %}
2 changes: 1 addition & 1 deletion macros/base/homing/homing_override.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,7 @@ gcode:
{% endif %}

{% else %}
{ action_respond_error("Axis homing order not valid. Choose either X or Y first in the variables.cfg file!") }
{ action_raise_error("Axis homing order not valid. Choose either X or Y first in the variables.cfg file!") }
{% endif %}


Expand Down