feat: handle remove of target properly
This commit is contained in:
@@ -51,10 +51,11 @@ class WallE:
|
|||||||
self.servo_positions[channel] = min_max.restval
|
self.servo_positions[channel] = min_max.restval
|
||||||
|
|
||||||
def tick(self):
|
def tick(self):
|
||||||
|
remove = {}
|
||||||
for channel, target in self.servo_targets.items():
|
for channel, target in self.servo_targets.items():
|
||||||
current_value = self.servo_positions[channel]
|
current_value = self.servo_positions[channel]
|
||||||
if target == current_value:
|
if target == current_value:
|
||||||
del self.servo_targets[channel]
|
remove[channel] = target
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
servo_min_max = SERVO_MIN_MAX[channel]
|
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
|
new_val = current_value + step_size if target > current_value else current_value - step_size
|
||||||
self.servo_controller.write(channel, new_val)
|
self.servo_controller.write(channel, new_val)
|
||||||
self.servo_positions[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):
|
def set_servo(self, channel, value):
|
||||||
try:
|
try:
|
||||||
|
|||||||
Reference in New Issue
Block a user