Ejemplo n.º 1
0
class CamControl:
    def __init__(self):
        # ServoBlaster is what we use to control servo motors
        # Upper Limit for servos
        self._ServoXul = 250
        self._ServoYul = 230

        # Lower limit for servos
        self._ServoXll = 75
        self._ServoYll = 75
        """
        Servos are default to Servo X-axis is assigned (servo-0) GPIO 4
            Servo-Y axis is assigned (servo-1) GPIO 17
        """
        self.servo_X = Servo(0, self._ServoXul, self._ServoXll)
        self.servo_Y = Servo(1, self._ServoYul, self._ServoYll)

    def recenter(self, offset_x, offset_y):
        # TODO
        print("Centering camera...")

    def left(self, distance, speed):
        print "left"
        self.servo_X.moveClockwise(distance, speed)
        return

    def right(self, distance, speed):
        print "right"
        self.servo_X.moveCounterClockwise(distance, speed)
        return

    def down(self, distance, speed):
        print "down"
        self.servo_Y.moveCounterClockwise(distance, speed)
        return

    def up(self, distance, speed):
        print "up"
        self.servo_Y.moveClockwise(distance, speed)
        return

    """
    Functions for tuning
    """

    def sweep(self):
        i = 0
        step = 1
        while True:
            try:
                if i >= 180:
                    step = -1
                elif i <= 0:
                    step = 1
                self.servo_X.setDegree(i)
                self.servo_Y.setDegree(i)
                i += step

                time.sleep(0.01)
                self.servo_X.rest()
                self.servo_Y.rest()
            except KeyboardInterrupt:
                break
        print("\ntidying up")