Skip to content

Commit 0b56693

Browse files
committed
Functions to control both wheels on distance and time elapse
1 parent 76a7b2d commit 0b56693

File tree

3 files changed

+60
-15
lines changed

3 files changed

+60
-15
lines changed

coderbot.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
import mpu
2727

2828
PIN_MOTOR_ENABLE = 22
29-
PIN_LEFT_FORWARD = 25
30-
PIN_LEFT_BACKWARD = 24
29+
PIN_LEFT_FORWARD = 25 # BACKWARD
30+
PIN_LEFT_BACKWARD = 24 # FORWARD
3131
PIN_RIGHT_FORWARD = 4
3232
PIN_RIGHT_BACKWARD = 17
3333
PIN_PUSHBUTTON = 11

rotary_encoder/motorencoder.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,19 +67,19 @@ def is_moving(self):
6767
def control(self, power=100.0, time_elapse=0):
6868
self._motor_lock.acquire() # acquiring lock
6969

70-
self._direction = 1 if power > 0 else -1 # setting direction according to speed
71-
self._power = power
7270
self.stop() # stopping motor to initialize new movement
71+
72+
self._direction = 1 if power > 0 else -1 # setting direction according to speed
73+
self._power = power # setting current power
74+
7375
self._pi.write(self._enable_pin, True) # enabling motors
7476

7577
# going forward
76-
if (self._direction):
78+
if (self._direction == 1):
7779
self._pi.set_PWM_dutycycle(self._forward_pin, abs(power))
78-
self._direction = 1
7980
# going bacakward
8081
else:
8182
self._pi.set_PWM_dutycycle(self._backward_pin, abs(power))
82-
self._direction = -1
8383

8484
self._is_moving = True
8585

rotary_encoder/wheelsaxel.py

Lines changed: 53 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -52,22 +52,67 @@ def speed(self):
5252
return (l_speed + r_speed) / 2
5353

5454
# MOVEMENT
55-
def control(self, power_left = 100, power_right = 100, time_elapse = 0):
56-
57-
self._left_motor.control(power_left, time_elapse)
58-
self._right_motor.control(power_right, time_elapse)
55+
def control_time(self, power_left=100, power_right=100, time_elapse=0):
56+
self._wheelsAxle_lock.acquire()
57+
self._left_motor.control(power_left)
58+
self._right_motor.control(power_right)
59+
self._is_moving = True
60+
61+
if(time_elapse > 0):
62+
sleep(time_elapse)
63+
self.stop()
64+
65+
def control_distance(self, power_left=100, power_right=100, target_distance=0):
66+
self._wheelsAxle_lock.acquire()
5967
self._is_moving = True
6068

61-
if(time_elapse > 0):
62-
sleep(time_elapse)
63-
self.stop()
69+
self._left_motor.control(power_left)
70+
self._right_motor.control(power_right)
71+
72+
while(target_distance > 0):
73+
target_distance = target_distance - self.distance()
74+
print(str(target_distance))
75+
76+
self.stop()
77+
78+
# def control_distance(self, power_left = 100, power_right = 100, target_distance = 0):
79+
# self._is_moving = True
80+
# delta = 1
81+
#
82+
# while(target_distance > 0):
83+
#
84+
# self._left_motor.control(min(max(power_left * delta, power_left), 100))
85+
# self._right_motor.control(min(max(power_right * delta, power_right), 100))
86+
#
87+
# print("Target distance: " + str(target_distance))
88+
# print("Power left: " + str(power_left * delta))
89+
# print("Power right: " + str(power_right * delta))
90+
#
91+
# sleep(.2)
92+
#
93+
# try:
94+
# delta = self._left_motor.ticks() / self._right_motor.ticks()
95+
# target_distance = target_distance - self.distance()
96+
# except:
97+
# delta = 1
98+
#
99+
# print("delta_ticks: " + str(delta))
100+
# print("new target distance: " + str(target_distance))
101+
# print("")
102+
#
103+
# print("Stopping...")
104+
# self.stop()
64105

65106
""" The stop function calls the two stop functions of the two
66-
correspondent motors """
107+
correspondent motors
108+
locks are automatically obtained """
67109
def stop(self):
68110
self._left_motor.stop()
69111
self._right_motor.stop()
112+
print(self._left_motor.distance())
113+
print(self._right_motor._distance)
70114
self._is_moving = False
115+
self._wheelsAxle_lock.release()
71116

72117
# CALLBACK
73118

0 commit comments

Comments
 (0)