diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2020-07-16 14:45:48 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2020-07-25 11:39:39 -0400 |
commit | 428a8d48817646588e09258f258926e50dfdee58 (patch) | |
tree | 750aa082a2c0e95ee8726db10f5361bb0c9837ec /klippy/extras/servo.py | |
parent | 122fd88c6ae6af4f5c485b7b74d3b95d8603df88 (diff) | |
download | kutter-428a8d48817646588e09258f258926e50dfdee58.tar.gz kutter-428a8d48817646588e09258f258926e50dfdee58.tar.xz kutter-428a8d48817646588e09258f258926e50dfdee58.zip |
servo: Remove servo ENABLE parameter
Allow one to disable servos via `SET_SERVO WIDTH=0` instead of using
an explicit ENABLE parameter.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/extras/servo.py')
-rw-r--r-- | klippy/extras/servo.py | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/klippy/extras/servo.py b/klippy/extras/servo.py index c579b143..8225a0f9 100644 --- a/klippy/extras/servo.py +++ b/klippy/extras/servo.py @@ -23,8 +23,6 @@ class PrinterServo: self.angle_to_width = (self.max_width - self.min_width) / self.max_angle self.width_to_value = 1. / SERVO_SIGNAL_PERIOD self.last_value = self.last_value_time = 0. - self.enable = config.getboolean('enable', True) - self.last_enable = not self.enable servo_name = config.get_name().split()[1] gcode = self.printer.lookup_object('gcode') gcode.register_mux_command("SET_SERVO", "SERVO", servo_name, @@ -53,37 +51,29 @@ class PrinterServo: def get_status(self, eventtime): return {'value': self.last_value} def _set_pwm(self, print_time, value): - if value == self.last_value and self.enable == self.last_enable: + if value == self.last_value: return print_time = max(print_time, self.last_value_time + PIN_MIN_TIME) - if self.enable: - self.mcu_servo.set_pwm(print_time, value) - else: - self.mcu_servo.set_pwm(print_time, 0) + self.mcu_servo.set_pwm(print_time, value) self.last_value = value - self.last_enable = self.enable self.last_value_time = print_time def _get_pwm_from_angle(self, angle): angle = max(0., min(self.max_angle, angle)) width = self.min_width + angle * self.angle_to_width return width * self.width_to_value def _get_pwm_from_pulse_width(self, width): - width = max(self.min_width, min(self.max_width, width)) + if width: + width = max(self.min_width, min(self.max_width, width)) return width * self.width_to_value cmd_SET_SERVO_help = "Set servo angle" def cmd_SET_SERVO(self, gcmd): print_time = self.printer.lookup_object('toolhead').get_last_move_time() - enable = gcmd.get_int('ENABLE', None) width = gcmd.get_float('WIDTH', None) - angle = gcmd.get_float('ANGLE', None) - if enable is not None: - self.enable = enable != 0 if width is not None: self._set_pwm(print_time, self._get_pwm_from_pulse_width(width)) - elif angle is not None: - self._set_pwm(print_time, self._get_pwm_from_angle(angle)) else: - self._set_pwm(print_time, self.last_value) + angle = gcmd.get_float('ANGLE') + self._set_pwm(print_time, self._get_pwm_from_angle(angle)) def load_config_prefix(config): return PrinterServo(config) |