/
CamControl.py
82 lines (67 loc) · 1.59 KB
/
CamControl.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import time
from multiprocessing import Process, Queue
from Servo import Servo
class CamControl:
"""
Servos are default to Servo X axis is assigned (servo-0) GPIO 4
Servo Y axis is assigned (servo-0) GPIO 17
"""
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
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 camLeft(self, distance, speed):
print "left"
self.servo_X.moveClockwise(distance, speed)
return;
def camRight(self, distance, speed):
print "right"
self.servo_X.moveCounterClockwise(distance, speed)
return;
def camDown(self, distance, speed):
print "down"
self.servo_Y.moveCounterClockwise(distance, speed)
return;
def camUp(self, distance, speed):
print "up"
self.servo_Y.moveClockwise(distance, speed)
return;
"""
Functions for tuning
"""
def sweep(self):
i = 0
while True:
try:
if i >= 180:
step = -1
elif i <= 0:
step = 1
self.servo_X.setDegree(i)
self.servo_Y.setDegree(i)
i = i + step
time.sleep(0.01)
self.servo_X.rest()
self.servo_Y.rest()
except KeyboardInterrupt:
break
print("\ntidying up")
"""
# For testing Implementation
if __name__ == "__main__":
import time
import CamControl
print "Running"
cam = CamControl.CamControl()
cam.camLeft(20,1)
cam.camUp(20,1)
"""