@@ -17,9 +17,9 @@ class PassiveMotor(Device):
17
17
def __init__ (self , port ):
18
18
super ().__init__ (port )
19
19
self ._default_speed = 20
20
+ self ._currentspeed = 0
20
21
self .plimit (0.7 )
21
22
self .bias (0.3 )
22
- self .current_freerun_speed = 0
23
23
24
24
def set_default_speed (self , default_speed ):
25
25
"""Sets the default speed of the motor
@@ -35,24 +35,24 @@ def start(self, speed=None):
35
35
36
36
:param speed: Speed ranging from -100 to 100
37
37
"""
38
- if self .current_freerun_speed == speed :
38
+ if self ._currentspeed == speed :
39
39
# Already running at this speed, do nothing
40
- return
40
+ return
41
41
42
42
if speed is None :
43
43
speed = self ._default_speed
44
44
else :
45
45
if not (speed >= - 100 and speed <= 100 ):
46
46
raise MotorException ("Invalid Speed" )
47
- self .current_freerun_speed = speed
47
+ self ._currentspeed = speed
48
48
cmd = "port {} ; pwm ; set {}\r " .format (self .port , speed / 100 )
49
49
self ._write (cmd )
50
50
51
51
def stop (self ):
52
52
"""Stops motor"""
53
53
cmd = "port {} ; off\r " .format (self .port )
54
54
self ._write (cmd )
55
- self .current_freerun_speed = 0
55
+ self ._currentspeed = 0
56
56
57
57
def plimit (self , plimit ):
58
58
if not (plimit >= 0 and plimit <= 1 ):
@@ -71,6 +71,7 @@ class MotorRunmode(Enum):
71
71
DEGREES = 2
72
72
SECONDS = 3
73
73
74
+
74
75
class Motor (Device ):
75
76
"""Motor device
76
77
@@ -81,7 +82,7 @@ class Motor(Device):
81
82
def __init__ (self , port ):
82
83
super ().__init__ (port )
83
84
self .default_speed = 20
84
- self .current_freerun_speed = 0
85
+ self ._currentspeed = 0
85
86
self .mode ([(1 ,0 ),(2 ,0 ),(3 ,0 )])
86
87
self .plimit (0.7 )
87
88
self .bias (0.3 )
@@ -90,7 +91,7 @@ def __init__(self, port):
90
91
self ._cvqueue = Condition ()
91
92
self .when_rotated = None
92
93
self ._oldpos = None
93
- self .runmode = MotorRunmode .NONE
94
+ self ._runmode = MotorRunmode .NONE
94
95
95
96
def set_default_speed (self , default_speed ):
96
97
"""Sets the default speed of the motor
@@ -107,7 +108,7 @@ def run_for_rotations(self, rotations, speed=None, blocking=True):
107
108
:param rotations: Number of rotations
108
109
:param speed: Speed ranging from -100 to 100
109
110
"""
110
- self .runmode = MotorRunmode .DEGREES
111
+ self ._runmode = MotorRunmode .DEGREES
111
112
if speed is None :
112
113
self .run_for_degrees (int (rotations * 360 ), self .default_speed , blocking )
113
114
else :
@@ -116,7 +117,7 @@ def run_for_rotations(self, rotations, speed=None, blocking=True):
116
117
self .run_for_degrees (int (rotations * 360 ), speed , blocking )
117
118
118
119
def _run_for_degrees (self , degrees , speed ):
119
- self .runmode = MotorRunmode .DEGREES
120
+ self ._runmode = MotorRunmode .DEGREES
120
121
mul = 1
121
122
if speed < 0 :
122
123
speed = abs (speed )
@@ -134,10 +135,10 @@ def _run_for_degrees(self, degrees, speed):
134
135
if self ._release :
135
136
time .sleep (0.2 )
136
137
self .coast ()
137
- self .runmode = MotorRunmode .NONE
138
+ self ._runmode = MotorRunmode .NONE
138
139
139
140
def _run_to_position (self , degrees , speed , direction ):
140
- self .runmode = MotorRunmode .DEGREES
141
+ self ._runmode = MotorRunmode .DEGREES
141
142
data = self .get ()
142
143
pos = data [1 ]
143
144
apos = data [2 ]
@@ -168,7 +169,7 @@ def _run_to_position(self, degrees, speed, direction):
168
169
if self ._release :
169
170
time .sleep (0.2 )
170
171
self .coast ()
171
- self .runmode = MotorRunmode .NONE
172
+ self ._runmode = MotorRunmode .NONE
172
173
173
174
def run_for_degrees (self , degrees , speed = None , blocking = True ):
174
175
"""Runs motor for N degrees
@@ -178,7 +179,7 @@ def run_for_degrees(self, degrees, speed=None, blocking=True):
178
179
:param degrees: Number of degrees to rotate
179
180
:param speed: Speed ranging from -100 to 100
180
181
"""
181
- self .runmode = MotorRunmode .DEGREES
182
+ self ._runmode = MotorRunmode .DEGREES
182
183
if speed is None :
183
184
speed = self .default_speed
184
185
if not (speed >= - 100 and speed <= 100 ):
@@ -196,7 +197,7 @@ def run_to_position(self, degrees, speed=None, blocking=True, direction="shortes
196
197
:param degrees: Position in degrees
197
198
:param speed: Speed ranging from 0 to 100
198
199
"""
199
- self .runmode = MotorRunmode .DEGREES
200
+ self ._runmode = MotorRunmode .DEGREES
200
201
if speed is None :
201
202
speed = self .default_speed
202
203
if not (speed >= 0 and speed <= 100 ):
@@ -211,22 +212,22 @@ def run_to_position(self, degrees, speed=None, blocking=True, direction="shortes
211
212
self ._run_to_position (degrees , speed , direction )
212
213
213
214
def _run_for_seconds (self , seconds , speed ):
214
- self .runmode = MotorRunmode .SECONDS
215
+ self ._runmode = MotorRunmode .SECONDS
215
216
cmd = "port {} ; combi 0 1 0 2 0 3 0 ; select 0 ; pid {} 0 0 s1 1 0 0.003 0.01 0 100; set pulse {} 0.0 {} 0\r " .format (self .port , self .port , speed , seconds );
216
217
self ._write (cmd );
217
218
with self ._hat .pulsecond [self .port ]:
218
219
self ._hat .pulsecond [self .port ].wait ()
219
220
if self ._release :
220
221
self .coast ()
221
- self .runmode = MotorRunmode .NONE
222
+ self ._runmode = MotorRunmode .NONE
222
223
223
224
def run_for_seconds (self , seconds , speed = None , blocking = True ):
224
225
"""Runs motor for N seconds
225
226
226
227
:param seconds: Time in seconds
227
228
:param speed: Speed ranging from -100 to 100
228
229
"""
229
- self .runmode = MotorRunmode .SECONDS
230
+ self ._runmode = MotorRunmode .SECONDS
230
231
if speed is None :
231
232
speed = self .default_speed
232
233
if not (speed >= - 100 and speed <= 100 ):
@@ -243,31 +244,31 @@ def start(self, speed=None):
243
244
244
245
:param speed: Speed ranging from -100 to 100
245
246
"""
246
- if self .runmode == MotorRunmode .FREE :
247
- if self .current_freerun_speed == speed :
247
+ if self ._runmode == MotorRunmode .FREE :
248
+ if self ._currentspeed == speed :
248
249
# Already running at this speed, do nothing
249
250
return
250
- elif self .runmode != MotorRunmode .NONE :
251
- # Motor is running some other mode, wait for it to stop or stop() it yourself
252
- return
251
+ elif self ._runmode != MotorRunmode .NONE :
252
+ # Motor is running some other mode, wait for it to stop or stop() it yourself
253
+ return
253
254
254
255
if speed is None :
255
256
speed = self .default_speed
256
257
else :
257
258
if not (speed >= - 100 and speed <= 100 ):
258
259
raise MotorException ("Invalid Speed" )
259
260
cmd = "port {} ; set {}\r " .format (self .port , speed )
260
- if self .runmode == MotorRunmode .NONE :
261
+ if self ._runmode == MotorRunmode .NONE :
261
262
cmd = "port {} ; combi 0 1 0 2 0 3 0 ; select 0 ; pid {} 0 0 s1 1 0 0.003 0.01 0 100; set {}\r " .format (self .port , self .port , speed )
262
- self .runmode = MotorRunmode .FREE
263
- self .current_freerun_speed = speed
263
+ self ._runmode = MotorRunmode .FREE
264
+ self ._currentspeed = speed
264
265
self ._write (cmd )
265
266
266
267
267
268
def stop (self ):
268
269
"""Stops motor"""
269
- self .runmode = MotorRunmode .NONE
270
- self .current_freerun_speed = 0
270
+ self ._runmode = MotorRunmode .NONE
271
+ self ._currentspeed = 0
271
272
self .coast ()
272
273
273
274
def get_position (self ):
0 commit comments