37
37
import board
38
38
from adafruit_pca9685 import PCA9685
39
39
40
+ try :
41
+ from typing import Optional , Tuple
42
+ from busio import I2C
43
+ import adafruit_motor .motor
44
+ import adafruit_motor .stepper
45
+ except ImportError :
46
+ pass
47
+
40
48
__version__ = "0.0.0-auto.0"
41
49
__repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_MotorKit.git"
42
50
@@ -50,8 +58,12 @@ class MotorKit:
50
58
Alternately, if using with multiple I2C devices, you can specify the I2C bus."""
51
59
52
60
def __init__ (
53
- self , address = 0x60 , i2c = None , steppers_microsteps = 16 , pwm_frequency = 1600
54
- ):
61
+ self ,
62
+ address : int = 0x60 ,
63
+ i2c : Optional [I2C ] = None ,
64
+ steppers_microsteps : int = 16 ,
65
+ pwm_frequency : float = 1600.0 ,
66
+ ) -> None :
55
67
self ._motor1 = None
56
68
self ._motor2 = None
57
69
self ._motor3 = None
@@ -67,7 +79,9 @@ def __init__(
67
79
# We can save memory usage (~300 bytes) by deduplicating the construction of the objects for
68
80
# each motor. This saves both code size and the number of raw strings (the error message)
69
81
# stored. The same technique is a net loss for stepper because there is less duplication.
70
- def _motor (self , motor_name , channels , stepper_name ):
82
+ def _motor (
83
+ self , motor_name : int , channels : Tuple [int , int , int ], stepper_name : int
84
+ ) -> adafruit_motor .motor .DCMotor :
71
85
from adafruit_motor import motor # pylint: disable=import-outside-toplevel
72
86
73
87
motor_name = "_motor" + str (motor_name )
@@ -90,7 +104,7 @@ def _motor(self, motor_name, channels, stepper_name):
90
104
return getattr (self , motor_name )
91
105
92
106
@property
93
- def motor1 (self ):
107
+ def motor1 (self ) -> adafruit_motor . motor . DCMotor :
94
108
""":py:class:``~adafruit_motor.motor.DCMotor`` controls for motor 1.
95
109
96
110
The following image shows the location of the M1 terminal on the DC/Stepper FeatherWing.
@@ -117,7 +131,7 @@ def motor1(self):
117
131
return self ._motor (1 , (8 , 9 , 10 ), 1 )
118
132
119
133
@property
120
- def motor2 (self ):
134
+ def motor2 (self ) -> adafruit_motor . motor . DCMotor :
121
135
""":py:class:``~adafruit_motor.motor.DCMotor`` controls for motor 2.
122
136
123
137
The following image shows the location of the M2 terminal on the DC/Stepper FeatherWing.
@@ -144,7 +158,7 @@ def motor2(self):
144
158
return self ._motor (2 , (13 , 11 , 12 ), 1 )
145
159
146
160
@property
147
- def motor3 (self ):
161
+ def motor3 (self ) -> adafruit_motor . motor . DCMotor :
148
162
""":py:class:``~adafruit_motor.motor.DCMotor`` controls for motor 3.
149
163
150
164
The following image shows the location of the M2 terminal on the DC/Stepper FeatherWing.
@@ -171,7 +185,7 @@ def motor3(self):
171
185
return self ._motor (3 , (2 , 3 , 4 ), 2 )
172
186
173
187
@property
174
- def motor4 (self ):
188
+ def motor4 (self ) -> adafruit_motor . motor . DCMotor :
175
189
""":py:class:``~adafruit_motor.motor.DCMotor`` controls for motor 4.
176
190
177
191
.. image :: ../docs/_static/motor_featherwing/m4.jpg
@@ -194,7 +208,7 @@ def motor4(self):
194
208
return self ._motor (4 , (7 , 5 , 6 ), 2 )
195
209
196
210
@property
197
- def stepper1 (self ):
211
+ def stepper1 (self ) -> adafruit_motor . stepper . StepperMotor :
198
212
""":py:class:``~adafruit_motor.stepper.StepperMotor`` controls for one connected to stepper
199
213
1 (also labeled motor 1 and motor 2).
200
214
@@ -238,7 +252,7 @@ def stepper1(self):
238
252
return self ._stepper1
239
253
240
254
@property
241
- def stepper2 (self ):
255
+ def stepper2 (self ) -> adafruit_motor . stepper . StepperMotor :
242
256
""":py:class:``~adafruit_motor.stepper.StepperMotor`` controls for one connected to stepper
243
257
2 (also labeled motor 3 and motor 4).
244
258
@@ -282,10 +296,10 @@ def stepper2(self):
282
296
return self ._stepper2
283
297
284
298
@property
285
- def frequency (self ):
299
+ def frequency (self ) -> float :
286
300
"""The overall PCA9685 PWM frequency in Hertz."""
287
301
return self ._pca .frequency
288
302
289
303
@frequency .setter
290
- def frequency (self , pwm_frequency = 1600 ) :
304
+ def frequency (self , pwm_frequency : float = 1600.0 ) -> None :
291
305
self ._pca .frequency = pwm_frequency
0 commit comments