diff options
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 |