@@ -148,10 +148,6 @@ def servo4(self, angle):
148
148
def get_sonar_distance (self , sonar_id = 0 ):
149
149
return self .sonar [sonar_id ].get_distance ()
150
150
151
- def _dc_enc_motor (self , speed_left = 100 , speed_right = 100 , elapse = - 1 , steps_left = - 1 , steps_right = - 1 ):
152
- self ._twin_motors_enc .control (power_left = speed_left , power_right = speed_right ,
153
- elapse = elapse , speed_left = speed_left , speed_right = speed_right ,
154
- steps_left = steps_left , steps_right = steps_right )
155
151
156
152
def _dc_motor (self , speed_left = 100 , speed_right = 100 , elapse = - 1 , steps_left = - 1 , steps_right = - 1 ):
157
153
@@ -256,6 +252,11 @@ def _cb_button(self, gpio, level, tick):
256
252
logging .info ("pushed: %d, %d" , level , tick )
257
253
cb ()
258
254
255
+ def _dc_enc_motor (self , speed_left = 100 , speed_right = 100 , elapse = - 1 , steps_left = - 1 , steps_right = - 1 ):
256
+ self ._twin_motors_enc .control (power_left = speed_left , power_right = speed_right ,
257
+ elapse = elapse , speed_left = speed_left , speed_right = speed_right ,
258
+ steps_left = steps_left , steps_right = steps_right )
259
+
259
260
class MotorEncoder (object ):
260
261
# def __init__(self, parent, _pigpio, pin_enable, pin_forward, pin_backward, pin_encoder):
261
262
# self._parent = parent
@@ -286,56 +287,56 @@ class MotorEncoder(object):
286
287
# def exit(self):
287
288
# self._cb.cancel()
288
289
289
- def _cb_encoder (self , gpio , level , tick ):
290
- self ._motor_lock .acquire ()
291
- self ._encoder_dist += 1
292
- delta_ticks = tick - self ._encoder_last_tick if tick > self ._encoder_last_tick else tick - self ._encoder_last_tick + 4294967295
293
- self ._encoder_last_tick = tick
294
- self ._encoder_speed = 1000000.0 / delta_ticks #convert speed in steps per second
295
- #print "pin: " + str(self._pin_forward) + " dist: " + str(self._encoder_dist) + " target: " + str(self._encoder_dist_target)
296
- if self ._encoder_dist_target >= 0 and self ._motor_stop_fast :
297
- #delta_s is the delta (in steps)before the target to reverse the motor in order to arrive at target
298
- delta_s = max (min (self ._encoder_speed / self ._encoder_k_s_1 , 100 ), 0 )
299
- #print "pin: " + str(self._pin_forward) + " dist: " + str(self._encoder_dist) + " target: " + str(self._encoder_dist_target) + " delta_s: " + str(delta_s)
300
- if (self ._encoder_dist >= self ._encoder_dist_target - delta_s and
301
- not self ._motor_stopping and self ._motor_running ):
302
- self ._motor_stopping = True
303
- self ._pigpio .write (self ._pin_duty , 0 )
304
- self ._pigpio .set_PWM_dutycycle (self ._pin_reverse , self ._power )
305
- elif (self ._motor_running and
306
- ((self ._motor_stopping and
307
- self ._encoder_speed < self ._encoder_k_v_1 ) or
308
- (self ._motor_stopping and
309
- self ._encoder_dist >= self ._encoder_dist_target ))):
310
- self .stop ()
311
- logging .info ("dist: " + str (self ._encoder_dist ) + " speed: " + str (self ._encoder_speed ))
312
- if self ._encoder_dist_target >= 0 and not self ._motor_stop_fast :
313
- if self ._encoder_dist >= self ._encoder_dist_target :
314
- self .stop ()
315
- self ._parent ._cb_encoder (self , gpio , level , tick )
316
- self ._motor_lock .release ()
317
- if not self ._motor_running :
318
- self ._parent ._check_complete ()
319
-
320
- def control (self , power = 100.0 , elapse = - 1 , speed = 100.0 , steps = - 1 ):
321
- self ._motor_lock .acquire ()
322
- self ._direction = speed > 0
323
- self ._encoder_dist_target = steps
324
- self ._motor_stopping = False
325
- self ._motor_running = True
326
- self ._encoder_dist = 0
327
- self ._encoder_speed_target = abs (speed )
328
- self ._power = abs (power ) #TODO: initial power must be a function of desired speed
329
- self ._power_actual = abs (power ) #TODO: initial power must be a function of desired speed
330
- self ._pin_duty = self ._pin_forward if self ._direction else self ._pin_backward
331
- self ._pin_reverse = self ._pin_backward if self ._direction else self ._pin_forward
332
- self ._pigpio .write (self ._pin_reverse , 0 )
333
- self ._pigpio .set_PWM_dutycycle (self ._pin_duty , self ._power )
334
- self ._pigpio .write (self ._pin_enable , True )
335
- self ._motor_lock .release ()
336
- if elapse > 0 :
337
- time .sleep (elapse )
338
- self .stop ()
290
+ # def _cb_encoder(self, gpio, level, tick):
291
+ # # self._motor_lock.acquire()
292
+ # # self._encoder_dist += 1
293
+ # delta_ticks = tick - self._encoder_last_tick if tick > self._encoder_last_tick else tick - self._encoder_last_tick + 4294967295
294
+ # self._encoder_last_tick = tick
295
+ # # self._encoder_speed = 1000000.0 / delta_ticks #convert speed in steps per second
296
+ # #print "pin: " + str(self._pin_forward) + " dist: " + str(self._encoder_dist) + " target: " + str(self._encoder_dist_target)
297
+ # if self._encoder_dist_target >= 0 and self._motor_stop_fast:
298
+ # #delta_s is the delta (in steps)before the target to reverse the motor in order to arrive at target
299
+ # delta_s = max(min(self._encoder_speed / self._encoder_k_s_1, 100), 0)
300
+ # #print "pin: " + str(self._pin_forward) + " dist: " + str(self._encoder_dist) + " target: " + str(self._encoder_dist_target) + " delta_s: " + str(delta_s)
301
+ # if (self._encoder_dist >= self._encoder_dist_target - delta_s and
302
+ # not self._motor_stopping and self._motor_running):
303
+ # self._motor_stopping = True
304
+ # self._pigpio.write(self._pin_duty, 0)
305
+ # self._pigpio.set_PWM_dutycycle(self._pin_reverse, self._power)
306
+ # elif (self._motor_running and
307
+ # ((self._motor_stopping and
308
+ # self._encoder_speed < self._encoder_k_v_1) or
309
+ # (self._motor_stopping and
310
+ # self._encoder_dist >= self._encoder_dist_target))):
311
+ # self.stop()
312
+ # logging.info("dist: " + str(self._encoder_dist) + " speed: " + str(self._encoder_speed))
313
+ # if self._encoder_dist_target >= 0 and not self._motor_stop_fast:
314
+ # if self._encoder_dist >= self._encoder_dist_target:
315
+ # self.stop()
316
+ # self._parent._cb_encoder(self, gpio, level, tick)
317
+ # # self._motor_lock.release()
318
+ # if not self._motor_running:
319
+ # self._parent._check_complete()
320
+
321
+ # def control(self, power=100.0, elapse=-1, speed=100.0, steps=-1):
322
+ # # self._motor_lock.acquire()
323
+ # # self._direction = speed > 0
324
+ # self._encoder_dist_target = steps
325
+ # self._motor_stopping = False
326
+ # self._motor_running = True
327
+ # # self._encoder_dist = 0
328
+ # self._encoder_speed_target = abs(speed)
329
+ # # self._power = abs(power) #TODO: initial power must be a function of desired speed
330
+ # self._power_actual = abs(power) #TODO: initial power must be a function of desired speed
331
+ # self._pin_duty = self._pin_forward if self._direction else self._pin_backward
332
+ # self._pin_reverse = self._pin_backward if self._direction else self._pin_forward
333
+ # self._pigpio.write(self._pin_reverse, 0)
334
+ # # self._pigpio.set_PWM_dutycycle(self._pin_duty, self._power)
335
+ # self._pigpio.write(self._pin_enable, True)
336
+ # # self._motor_lock.release()
337
+ # # if elapse > 0:
338
+ # # time.sleep(elapse)
339
+ # # self.stop()
339
340
340
341
# def stop(self):
341
342
# self._motor_lock.acquire()
0 commit comments