"""Helpers for building moving mirrors.""" from objects.board import Board class Motor: """Model a type of servo motor.""" OFFSET = 0 # In degrees a constant to be added SCALE = 1 # Scaling def __init__(self, board: Board, angle=0): self.board: Board = board self.id: int = Board.count Board.count += 1 self.angle = angle self.offset = Motor.OFFSET # Fine grained controls over every motor self.coverage = Board.COVER self.scale = Motor.SCALE # Initialization self.set() # Update the motor position on hardware def set(self): self.board.kit.servo[self.id].angle = self.angle * self.scale + self.offset def set_angle(self, angle): self.angle = min(self.coverage, max(0, angle)) # Double check bad self.set() def __str__(self): return f"Motor {self.id} is set at {self.angle} degrees." def inc(self, inc): self.angle += inc self.angle = min(max(self.angle, 0), Board.COVER) # Clip self.set()