Skip to content

Commit 10a19ae

Browse files
committed
Small refactoring changes
1 parent a4edde7 commit 10a19ae

File tree

1 file changed

+28
-27
lines changed

1 file changed

+28
-27
lines changed

buildhat/motors.py

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ class PassiveMotor(Device):
1717
def __init__(self, port):
1818
super().__init__(port)
1919
self._default_speed = 20
20+
self._currentspeed = 0
2021
self.plimit(0.7)
2122
self.bias(0.3)
22-
self.current_freerun_speed = 0
2323

2424
def set_default_speed(self, default_speed):
2525
"""Sets the default speed of the motor
@@ -35,24 +35,24 @@ def start(self, speed=None):
3535
3636
:param speed: Speed ranging from -100 to 100
3737
"""
38-
if self.current_freerun_speed == speed:
38+
if self._currentspeed == speed:
3939
# Already running at this speed, do nothing
40-
return
40+
return
4141

4242
if speed is None:
4343
speed = self._default_speed
4444
else:
4545
if not (speed >= -100 and speed <= 100):
4646
raise MotorException("Invalid Speed")
47-
self.current_freerun_speed = speed
47+
self._currentspeed = speed
4848
cmd = "port {} ; pwm ; set {}\r".format(self.port, speed/100)
4949
self._write(cmd)
5050

5151
def stop(self):
5252
"""Stops motor"""
5353
cmd = "port {} ; off\r".format(self.port)
5454
self._write(cmd)
55-
self.current_freerun_speed = 0
55+
self._currentspeed = 0
5656

5757
def plimit(self, plimit):
5858
if not (plimit >= 0 and plimit <= 1):
@@ -71,6 +71,7 @@ class MotorRunmode(Enum):
7171
DEGREES = 2
7272
SECONDS = 3
7373

74+
7475
class Motor(Device):
7576
"""Motor device
7677
@@ -81,7 +82,7 @@ class Motor(Device):
8182
def __init__(self, port):
8283
super().__init__(port)
8384
self.default_speed = 20
84-
self.current_freerun_speed = 0
85+
self._currentspeed = 0
8586
self.mode([(1,0),(2,0),(3,0)])
8687
self.plimit(0.7)
8788
self.bias(0.3)
@@ -90,7 +91,7 @@ def __init__(self, port):
9091
self._cvqueue = Condition()
9192
self.when_rotated = None
9293
self._oldpos = None
93-
self.runmode = MotorRunmode.NONE
94+
self._runmode = MotorRunmode.NONE
9495

9596
def set_default_speed(self, default_speed):
9697
"""Sets the default speed of the motor
@@ -107,7 +108,7 @@ def run_for_rotations(self, rotations, speed=None, blocking=True):
107108
:param rotations: Number of rotations
108109
:param speed: Speed ranging from -100 to 100
109110
"""
110-
self.runmode = MotorRunmode.DEGREES
111+
self._runmode = MotorRunmode.DEGREES
111112
if speed is None:
112113
self.run_for_degrees(int(rotations * 360), self.default_speed, blocking)
113114
else:
@@ -116,7 +117,7 @@ def run_for_rotations(self, rotations, speed=None, blocking=True):
116117
self.run_for_degrees(int(rotations * 360), speed, blocking)
117118

118119
def _run_for_degrees(self, degrees, speed):
119-
self.runmode = MotorRunmode.DEGREES
120+
self._runmode = MotorRunmode.DEGREES
120121
mul = 1
121122
if speed < 0:
122123
speed = abs(speed)
@@ -134,10 +135,10 @@ def _run_for_degrees(self, degrees, speed):
134135
if self._release:
135136
time.sleep(0.2)
136137
self.coast()
137-
self.runmode = MotorRunmode.NONE
138+
self._runmode = MotorRunmode.NONE
138139

139140
def _run_to_position(self, degrees, speed, direction):
140-
self.runmode = MotorRunmode.DEGREES
141+
self._runmode = MotorRunmode.DEGREES
141142
data = self.get()
142143
pos = data[1]
143144
apos = data[2]
@@ -168,7 +169,7 @@ def _run_to_position(self, degrees, speed, direction):
168169
if self._release:
169170
time.sleep(0.2)
170171
self.coast()
171-
self.runmode = MotorRunmode.NONE
172+
self._runmode = MotorRunmode.NONE
172173

173174
def run_for_degrees(self, degrees, speed=None, blocking=True):
174175
"""Runs motor for N degrees
@@ -178,7 +179,7 @@ def run_for_degrees(self, degrees, speed=None, blocking=True):
178179
:param degrees: Number of degrees to rotate
179180
:param speed: Speed ranging from -100 to 100
180181
"""
181-
self.runmode = MotorRunmode.DEGREES
182+
self._runmode = MotorRunmode.DEGREES
182183
if speed is None:
183184
speed = self.default_speed
184185
if not (speed >= -100 and speed <= 100):
@@ -196,7 +197,7 @@ def run_to_position(self, degrees, speed=None, blocking=True, direction="shortes
196197
:param degrees: Position in degrees
197198
:param speed: Speed ranging from 0 to 100
198199
"""
199-
self.runmode = MotorRunmode.DEGREES
200+
self._runmode = MotorRunmode.DEGREES
200201
if speed is None:
201202
speed = self.default_speed
202203
if not (speed >= 0 and speed <= 100):
@@ -211,22 +212,22 @@ def run_to_position(self, degrees, speed=None, blocking=True, direction="shortes
211212
self._run_to_position(degrees, speed, direction)
212213

213214
def _run_for_seconds(self, seconds, speed):
214-
self.runmode = MotorRunmode.SECONDS
215+
self._runmode = MotorRunmode.SECONDS
215216
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);
216217
self._write(cmd);
217218
with self._hat.pulsecond[self.port]:
218219
self._hat.pulsecond[self.port].wait()
219220
if self._release:
220221
self.coast()
221-
self.runmode = MotorRunmode.NONE
222+
self._runmode = MotorRunmode.NONE
222223

223224
def run_for_seconds(self, seconds, speed=None, blocking=True):
224225
"""Runs motor for N seconds
225226
226227
:param seconds: Time in seconds
227228
:param speed: Speed ranging from -100 to 100
228229
"""
229-
self.runmode = MotorRunmode.SECONDS
230+
self._runmode = MotorRunmode.SECONDS
230231
if speed is None:
231232
speed = self.default_speed
232233
if not (speed >= -100 and speed <= 100):
@@ -243,31 +244,31 @@ def start(self, speed=None):
243244
244245
:param speed: Speed ranging from -100 to 100
245246
"""
246-
if self.runmode == MotorRunmode.FREE:
247-
if self.current_freerun_speed == speed:
247+
if self._runmode == MotorRunmode.FREE:
248+
if self._currentspeed == speed:
248249
# Already running at this speed, do nothing
249250
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
253254

254255
if speed is None:
255256
speed = self.default_speed
256257
else:
257258
if not (speed >= -100 and speed <= 100):
258259
raise MotorException("Invalid Speed")
259260
cmd = "port {} ; set {}\r".format(self.port, speed)
260-
if self.runmode == MotorRunmode.NONE:
261+
if self._runmode == MotorRunmode.NONE:
261262
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
264265
self._write(cmd)
265266

266267

267268
def stop(self):
268269
"""Stops motor"""
269-
self.runmode = MotorRunmode.NONE
270-
self.current_freerun_speed = 0
270+
self._runmode = MotorRunmode.NONE
271+
self._currentspeed = 0
271272
self.coast()
272273

273274
def get_position(self):

0 commit comments

Comments
 (0)