aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/extras/tuning_tower.py
diff options
context:
space:
mode:
authorgithub@matthewlloyd.net <github@matthewlloyd.net>2021-08-31 20:06:13 -0400
committerKevinOConnor <kevin@koconnor.net>2021-09-02 12:05:31 -0400
commit830c80a88a3def5e2a4ef0ff9a6d833eff475d5e (patch)
tree07e61dca5f31e7d2c96a718e4803c219e2c685aa /klippy/extras/tuning_tower.py
parent286cc1beccea7d9d7c6ddf317874f2ccac9d7c51 (diff)
downloadkutter-830c80a88a3def5e2a4ef0ff9a6d833eff475d5e.tar.gz
kutter-830c80a88a3def5e2a4ef0ff9a6d833eff475d5e.tar.xz
kutter-830c80a88a3def5e2a4ef0ff9a6d833eff475d5e.zip
tuning_tower: Add STEP_DELTA and STEP_HEIGHT parameters as alternate tuning tower syntax
Signed-off-by: Matthew Lloyd <github@matthewlloyd.net>
Diffstat (limited to 'klippy/extras/tuning_tower.py')
-rw-r--r--klippy/extras/tuning_tower.py27
1 files changed, 24 insertions, 3 deletions
diff --git a/klippy/extras/tuning_tower.py b/klippy/extras/tuning_tower.py
index 0bcfc4db..493db2c8 100644
--- a/klippy/extras/tuning_tower.py
+++ b/klippy/extras/tuning_tower.py
@@ -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