This repository was archived by the owner on Feb 4, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfinal_code.py
83 lines (73 loc) · 1.84 KB
/
final_code.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import Adafruit_BBIO.ADC as ADC
import Adafruit_BBIO.PWM as PWM
import time
SENSOR_L = "P9_37"
SENSOR_R = "P9_38"
MOTOR_L = "P9_14"
MOTOR_R = "P8_13"
SENSOR_FRONT = "P9_39"
SENSOR_FLAG = "P9_40"
HIGH_L = 9.8
LOW_L = 7.6
HIGH_R = 1.2
LOW_R = 6.6
time_ini = 0
count = True
TOLERANCE = 2.0
ADC.setup()
PWM.start(MOTOR_L, 0, 50)
PWM.start(MOTOR_R, 0, 50)
def followInside():
if(ADC.read(SENSOR_L) < 0.2):
PWM.set_duty_cycle(MOTOR_L, LOW_L)
PWM.set_duty_cycle(MOTOR_R, HIGH_R)
else:
PWM.set_duty_cycle(MOTOR_L, HIGH_L)
PWM.set_duty_cycle(MOTOR_R, LOW_R)
def followOutside():
if(ADC.read(SENSOR_R) < 0.4):
PWM.set_duty_cycle(MOTOR_L, HIGH_L)
PWM.set_duty_cycle(MOTOR_R, LOW_R)
else:
PWM.set_duty_cycle(MOTOR_L, LOW_L)
PWM.set_duty_cycle(MOTOR_R, HIGH_R)
def stop():
PWM.set_duty_cyle(MOTOR_R, 0)
PWM.set_duty_cycle(MOTOR_L, 0)
while (1):
if(ADC.read(SENSOR_FRONT) < 0.15):
if(ADC.read(SENSOR_FLAG) < 0.4): #flag detected
if(count): #bigger loop
if(time.time() < time_ini + TOLERANCE): #dummy detected
stop()
time.sleep(2)
time_ini = time.time()
while(time.time() < time_ini + TOLERANCE):
followInside()
while(ADC.read(SENSOR_FLAG) > 0.4):
followInside()
time_ini = time.time()
while(time.time() < time_ini + TOLERANCE):
followInside()
else: #dummy not detected
time_ini = time.time()
while(time.time() < time_ini + TOLERANCE):
if(ADC.read(SENSOR_FRONT) > 0.15):
stop()
else:
followOutside()
count = False
else: #smaller loop
time_ini = time.time()
while(time.time() < time_ini + TOLERANCE):
if(ADC.read(SENSOR_FRONT) > 0.15):
stop()
else:
followOutside()
else: #flag not detected
followOutside()
else: #dummy detected
stop()
time.sleep(0.05)
if(ADC.read(SENSOR_FRONT) > 0.15):
time_ini = time.time()