mirror of
https://github.com/Klipper3d/klipper.git
synced 2025-07-23 22:54:10 -06:00
tuning_tower: Add STEP_DELTA and STEP_HEIGHT parameters as alternate tuning tower syntax
Signed-off-by: Matthew Lloyd <github@matthewlloyd.net>
This commit is contained in:
parent
286cc1becc
commit
830c80a88a
2 changed files with 51 additions and 15 deletions
|
@ -28,9 +28,16 @@ class TuningTower:
|
|||
command = gcmd.get('COMMAND')
|
||||
parameter = gcmd.get('PARAMETER')
|
||||
self.start = gcmd.get_float('START', 0.)
|
||||
self.factor = gcmd.get_float('FACTOR')
|
||||
self.factor = gcmd.get_float('FACTOR', 0.)
|
||||
self.band = gcmd.get_float('BAND', 0., minval=0.)
|
||||
self.step_delta = gcmd.get_float('STEP_DELTA', 0.)
|
||||
self.step_height = gcmd.get_float('STEP_HEIGHT', 0., minval=0.)
|
||||
self.skip = gcmd.get_float('SKIP', 0., minval=0.)
|
||||
if self.factor and (self.step_height or self.step_delta):
|
||||
raise gcmd.error(
|
||||
"Cannot specify both FACTOR and STEP_DELTA/STEP_HEIGHT")
|
||||
if (self.step_delta != 0.) != (self.step_height != 0.):
|
||||
raise gcmd.error("Must specify both STEP_DELTA and STEP_HEIGHT")
|
||||
# Enable test mode
|
||||
if self.gcode.is_traditional_gcode(command):
|
||||
self.command_fmt = "%s %s%%.9f" % (command, parameter)
|
||||
|
@ -41,8 +48,19 @@ class TuningTower:
|
|||
self.last_z = -99999999.9
|
||||
self.last_command_value = None
|
||||
self.get_position()
|
||||
gcmd.respond_info("Starting tuning test (start=%.6f factor=%.6f)"
|
||||
% (self.start, self.factor))
|
||||
message_parts = []
|
||||
message_parts.append("start=%.6f" % (self.start,))
|
||||
if self.factor:
|
||||
message_parts.append("factor=%.6f" % (self.factor,))
|
||||
if self.band:
|
||||
message_parts.append("band=%.6f" % (self.band,))
|
||||
else:
|
||||
message_parts.append("step_delta=%.6f" % (self.step_delta,))
|
||||
message_parts.append("step_height=%.6f" % (self.step_height,))
|
||||
if self.skip:
|
||||
message_parts.append("skip=%.6f" % (self.skip,))
|
||||
gcmd.respond_info(
|
||||
"Starting tuning test (" + " ".join(message_parts) + ")")
|
||||
def get_position(self):
|
||||
pos = self.normal_transform.get_position()
|
||||
self.last_position = list(pos)
|
||||
|
@ -50,6 +68,9 @@ class TuningTower:
|
|||
def calc_value(self, z):
|
||||
if self.skip:
|
||||
z = max(0., z - self.skip)
|
||||
if self.step_height:
|
||||
return self.start + \
|
||||
self.step_delta * math.floor(z / self.step_height)
|
||||
if self.band:
|
||||
z = (math.floor(z / self.band) + .5) * self.band
|
||||
return self.start + z * self.factor
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue