diff --git a/control/walle.py b/control/walle.py index 641e9f0..6ae8236 100644 --- a/control/walle.py +++ b/control/walle.py @@ -51,10 +51,11 @@ class WallE: self.servo_positions[channel] = min_max.restval def tick(self): + remove = {} for channel, target in self.servo_targets.items(): current_value = self.servo_positions[channel] if target == current_value: - del self.servo_targets[channel] + remove[channel] = target continue try: servo_min_max = SERVO_MIN_MAX[channel] @@ -65,6 +66,9 @@ class WallE: new_val = current_value + step_size if target > current_value else current_value - step_size self.servo_controller.write(channel, new_val) self.servo_positions[channel] = new_val + for channel, target in remove.items(): + if self.servo_targets[channel] == target: + del self.servo_targets[channel] def set_servo(self, channel, value): try: