Skip to content

Commit 8c7474c

Browse files
committed
New menu works, seems to need
double-click for abort. Added test.py for testing code outside of the Robot class.
1 parent fd525bb commit 8c7474c

File tree

5 files changed

+114
-113
lines changed

5 files changed

+114
-113
lines changed

FLLMaster/DriveLibraries.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -358,10 +358,10 @@ def ArcTurn(self, Degrees, Radius, Speed):
358358
# Otherwise, wait for the degrees turned to become <= Degrees
359359
if Degrees > 0:
360360
while (self.correctedAngle - startHeading) < Degrees:
361-
dummy = 1
361+
pass
362362
else:
363363
while (self.correctedAngle - startHeading) > Degrees:
364-
dummy = 1
364+
pass
365365

366366
# Stop the motors
367367
self.tank.stop()

FLLMaster/Main.py

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
#!/usr/bin/env python3
2-
from MenuLib import init, initthread, runCurrentMission
3-
from time import sleep
4-
from sys import stderr
2+
53
loopIndex = 0
64

5+
from MenuLib import init, initthread
6+
from sys import stderr
7+
78
init('robot.cfg')
89
initthread()
910
from MenuLib import *
@@ -17,39 +18,29 @@ def left():
1718
display()
1819
else:
1920
abort()
20-
minusCount()
21-
display()
2221
def right():
2322
if not mission.is_alive():
2423
addCount()
2524
display()
2625
else:
2726
abort()
28-
minusCount()
29-
display()
3027
def down():
3128
if not mission.is_alive():
3229
calibrate()
3330
else:
3431
abort()
35-
minusCount()
36-
display()
3732
def up():
3833
if not mission.is_alive():
3934
robot.reflectCal()
4035
else:
4136
abort()
42-
minusCount()
43-
display()
4437
def enter():
4538
if not mission.is_alive():
4639
run()
4740
addCount()
4841
display()
4942
else:
5043
abort()
51-
minusCount()
52-
display()
5344

5445
print("Functions Defined", file=stderr)
5546

@@ -64,9 +55,11 @@ def enter():
6455
print("Map Defined", file=stderr)
6556

6657
while True:
58+
from MenuLib import mission
6759
buttonlist = robot.btn.buttons_pressed
6860
if buttonlist:
6961
buttonMap[buttonlist[0]]()
7062
loopIndex = (loopIndex + 1) % 100
71-
checkDrift()
72-
displaySensor()
63+
if not mission.is_alive():
64+
checkDrift()
65+
displaySensor()

FLLMaster/MenuLib.py

Lines changed: 98 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -1,94 +1,99 @@
1-
from DriveLibraries import *
2-
import multiprocessing
3-
from time import sleep
4-
Missions = None
5-
mission = None
6-
robot = None
7-
programs = []
8-
numPrograms = 0
9-
count = 1
10-
loopIndex = 0
11-
12-
def init(confFile):
13-
global programs
14-
global numPrograms
15-
global robot
16-
global Missions
17-
robot = Robot(confFile)
18-
import Missions
19-
programs = dir(Missions)
20-
i = 0
21-
index = -1
22-
23-
length = len(programs)
24-
while i < length:
25-
if not ((programs[index][0] == "a") and (programs[index][1].isnumeric()) and (programs[index][2].isnumeric())):
26-
programs.pop(index)
27-
else:
28-
index -= 1
29-
i += 1
30-
numPrograms = len(programs)
31-
32-
robot.disp.clear()
33-
robot.disp.text_grid(programs[0][3:], font=robot.fonts.load('timR24'))
34-
35-
def runCurrentMission():
36-
method_to_call = getattr(Missions, programs[count - 1])
37-
method_to_call()
38-
robot.rm.off(brake=False)
39-
robot.lm.off(brake=False)
40-
41-
def initthread():
42-
global mission
43-
mission = multiprocessing.Process(target=runCurrentMission)
44-
45-
def run():
46-
robot.zeroGyro()
47-
mission.start()
48-
49-
def display():
50-
name = programs[count - 1][3:]
51-
robot.disp.text_grid(name, font=robot.fonts.load('timR24'))
52-
53-
def abort():
54-
mission.terminate()
55-
mission.join()
56-
robot.lm.off(brake=False)
57-
robot.rm.off(brake=False)
58-
59-
def addCount():
60-
global count
61-
count = (count % numPrograms) + 1
62-
63-
def minusCount():
64-
global count
65-
count = ((count + (numPrograms - 2)) % numPrograms) + 1
66-
67-
def checkDrift():
68-
ar = robot.gs.angle_and_rate
69-
rate = ar[1]
70-
if rate < -0.5 or rate > 0.5:
71-
robot.led.all_off()
72-
robot.led.set_color('LEFT', 'RED')
73-
robot.led.set_color('RIGHT', 'RED')
74-
else:
75-
robot.led.reset()
76-
77-
def displaySensor():
78-
if loopIndex == 0:
79-
robot.disp.rectangle(False, 0, 89, 177, 120, 'white', 'white')
80-
robot.disp.update
81-
robot.cs._ensure_mode(robot.cs.MODE_COL_REFLECT)
82-
robot.disp.text_pixels("P1, Color:" + str(robot.correctedRLI), False, 40, 90, font=robot.fonts.load('courR10'))
83-
robot.disp.text_pixels("P2, Gyro:" + str(robot.correctedAngle), False, 40, 100, font=robot.fonts.load('courR10'))
84-
robot.disp.update()
85-
86-
def calibrate():
87-
robot.led.all_off()
88-
robot.led.set_color('LEFT', 'YELLOW')
89-
robot.led.set_color('RIGHT', 'YELLOW')
90-
robot.spkr.beep('-f 369.99')
91-
robot.gs.calibrate()
92-
sleep(1)
93-
robot.spkr.beep()
1+
from DriveLibraries import *
2+
import multiprocessing
3+
from time import sleep
4+
Missions = None
5+
mission = None
6+
robot = None
7+
programs = []
8+
numPrograms = 0
9+
count = 1
10+
loopIndex = 0
11+
12+
def init(confFile):
13+
global programs
14+
global numPrograms
15+
global robot
16+
global Missions
17+
robot = Robot(confFile)
18+
import Missions
19+
programs = dir(Missions)
20+
i = 0
21+
index = -1
22+
23+
length = len(programs)
24+
while i < length:
25+
if not ((programs[index][0] == "a") and (programs[index][1].isnumeric()) and (programs[index][2].isnumeric())):
26+
programs.pop(index)
27+
else:
28+
index -= 1
29+
i += 1
30+
numPrograms = len(programs)
31+
32+
robot.disp.clear()
33+
robot.disp.text_grid(programs[0][3:], font=robot.fonts.load('timR24'))
34+
35+
def runCurrentMission():
36+
method_to_call = getattr(Missions, programs[count - 1])
37+
method_to_call()
38+
robot.rm.off(brake=False)
39+
robot.lm.off(brake=False)
40+
41+
def initthread():
42+
global mission
43+
mission = multiprocessing.Process(target=runCurrentMission)
44+
45+
def run():
46+
global mission
47+
mission = multiprocessing.Process(target=runCurrentMission)
48+
robot.zeroGyro()
49+
mission.start()
50+
51+
def display():
52+
name = programs[count - 1][3:]
53+
robot.disp.text_grid(name, font=robot.fonts.load('timR24'))
54+
55+
def abort():
56+
mission.terminate()
57+
mission.join()
58+
sleep(1)
59+
robot.lm.off(brake=False)
60+
robot.rm.off(brake=False)
61+
minusCount()
62+
display()
63+
64+
def addCount():
65+
global count
66+
count = (count % numPrograms) + 1
67+
68+
def minusCount():
69+
global count
70+
count = ((count + (numPrograms - 2)) % numPrograms) + 1
71+
72+
def checkDrift():
73+
ar = robot.gs.angle_and_rate
74+
rate = ar[1]
75+
if rate < -0.5 or rate > 0.5:
76+
robot.led.all_off()
77+
robot.led.set_color('LEFT', 'RED')
78+
robot.led.set_color('RIGHT', 'RED')
79+
else:
80+
robot.led.reset()
81+
82+
def displaySensor():
83+
if loopIndex == 0:
84+
robot.disp.rectangle(False, 0, 89, 177, 120, 'white', 'white')
85+
robot.disp.update
86+
robot.cs._ensure_mode(robot.cs.MODE_COL_REFLECT)
87+
robot.disp.text_pixels("P1, Color:" + str(robot.correctedRLI), False, 40, 90, font=robot.fonts.load('courR10'))
88+
robot.disp.text_pixels("P2, Gyro:" + str(robot.correctedAngle), False, 40, 100, font=robot.fonts.load('courR10'))
89+
robot.disp.update()
90+
91+
def calibrate():
92+
robot.led.all_off()
93+
robot.led.set_color('LEFT', 'YELLOW')
94+
robot.led.set_color('RIGHT', 'YELLOW')
95+
robot.spkr.beep('-f 369.99')
96+
robot.gs.calibrate()
97+
sleep(1)
98+
robot.spkr.beep()
9499
robot.led.reset()

FLLMaster/robot.cfg

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@ kd = 0.5
1414
ColorPort=INPUT_1
1515
GyroPort=INPUT_2
1616
InfraredPort=INPUT_4
17-
TouchPort= 0
17+
TouchPort= None
1818
UltrasonicPort=INPUT_3
1919
kpLine = 0.45
2020
kiLine = 0.01163
2121
kdLine = 2.528
2222

2323
[AuxMotors]
24-
AuxMotor1 = 0
25-
AuxMotor2 = 0
24+
AuxMotor1 = None
25+
AuxMotor2 = None
2626

2727
[Other]
2828
ForFLL = TRUE

FLLMaster/test.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/usr/bin/env python3
2+
3+
# Program for testing stuff without all of the framework; less things to go wrong

0 commit comments

Comments
 (0)