1- # Simple demo for controlling the plen:bit robot
2- # NOTE: MUST CUT MIDDLE TRACE ON PCA9685 ADDRESS JUMPER!
3-
4- import time
51import busio
62import board
73from digitalio import DigitalInOut , Direction
84from adafruit_pca9685 import PCA9685
95from adafruit_motor import servo
106
11- i2c = busio .I2C (board .SCL , board .SDA )
12- pca = PCA9685 (i2c , address = 0x68 )
13- pca .frequency = 50
147led = DigitalInOut (board .P16 )
158led .direction = Direction .OUTPUT
16- led .value = True
179
18- while True :
19- pass
10+ i2c = busio .I2C (board .SCL , board .SDA )
11+ pca = PCA9685 (i2c , address = 0x68 )
12+ pca .frequency = 50
2013servoSetInit = (1000 , 630 , 500 , 600 , 240 , 600 , 1000 , 720 )
2114servoAngle = [1000 , 630 , 500 , 600 , 240 , 600 , 1000 , 720 ]
2215motionSpeed = 15
2316servos = []
24- for s in range (8 ):
25- servos .append (servo .Servo (pca .channels [s ], min_pulse = 800 , max_pulse = 2200 ))
17+ for c in range (8 ):
18+ servos .append (servo .Servo (pca .channels [c ], min_pulse = 800 , max_pulse = 2200 ))
2619
2720def servoInitialSet ():
2821 print ("Initialize servos" )
29- for n in range (8 ):
30- servos [n ].angle = servoSetInit [n ] / 10
22+ for i in range (8 ):
23+ servos [i ].angle = servoSetInit [i ] / 10
3124
32- def servoFree (serv = None ):
33- if serv :
34- print ("Release servo #" , serv )
35- servos [serv ].angle = None
25+ def servoFree (n = None ):
26+ if n :
27+ print ("Release servo #" , n )
28+ servos [n ].angle = None
3629 else :
3730 print ("Release all servos" )
38- for ser in servos :
39- ser .angle = None
31+ for s in servos :
32+ s .angle = None
4033
4134def servoWrite (num , degrees ):
4235 degrees = min (max (degrees , 0 ), 180 )
@@ -61,12 +54,15 @@ def setAngle(angle, msec):
6154 print (servoAngle )
6255
6356servoInitialSet ()
64- time .sleep (1 )
57+
58+ led .value = False
6559setAngle ([0 , 0 , - 200 , 0 , 0 , 0 , 0 , 0 ], 500 )
6660setAngle ([0 , 0 , - 1800 , 0 , 0 , 0 , 1800 , 0 ], 500 )
6761setAngle ([900 , 0 , - 1800 , 0 , - 900 , 0 , 1800 , 0 ], 500 )
6862setAngle ([900 , 0 , - 200 , 0 , - 900 , 0 , 0 , 0 ], 500 )
6963setAngle ([900 , 0 , - 1800 , 0 , - 900 , 0 , 1800 , 0 ], 500 )
7064setAngle ([900 , 0 , - 200 , 0 , - 900 , 0 , 0 , 0 ], 500 )
7165setAngle ([0 , 0 , - 200 , 0 , 0 , 0 , 0 , 0 ], 500 )
66+ led .value = True
67+
7268servoFree ()
0 commit comments