diff options
author | github@matthewlloyd.net <github@matthewlloyd.net> | 2021-08-31 20:06:13 -0400 |
---|---|---|
committer | KevinOConnor <kevin@koconnor.net> | 2021-09-02 12:05:31 -0400 |
commit | 830c80a88a3def5e2a4ef0ff9a6d833eff475d5e (patch) | |
tree | 07e61dca5f31e7d2c96a718e4803c219e2c685aa /klippy/extras/tuning_tower.py | |
parent | 286cc1beccea7d9d7c6ddf317874f2ccac9d7c51 (diff) | |
download | kutter-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.py | 27 |
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 |