-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathBBB_BasicServo.py
36 lines (26 loc) · 969 Bytes
/
BBB_BasicServo.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
import Adafruit_BBIO.PWM as PWM
class Servo():
def __init__(self, servo_pin):
# Define duty cycle parameters for all servos
self.duty_min = 3.
self.duty_max = 14.5
self.duty_span = self.duty_max - self.duty_min
self.duty_mid = ((90.0 / 180) * self.duty_span + self.duty_min)
self.servo_pin = servo_pin
print 'starting servo PWM'
PWM.start(self.servo_pin, self.duty_mid, 60.0)
def set_servo_angle(self, angle):
angle_f = float(angle)
duty = ((angle_f / 180) * self.duty_span + self.duty_min)
PWM.set_duty_cycle(self.servo_pin, duty)
def close_servo(self):
PWM.stop(self.servo_pin)
PWM.cleanup()
if __name__ == "__main__":
servo1 = Servo("P9_29")
while True:
angle = raw_input("Angle (0 to 180 x to exit):")
if angle == 'x':
servo1.close_servo()
break
servo1.set_servo_angle(angle)