Skip to content

Commit a028f60

Browse files
authored
Merge pull request #1 from WesleyJ-128/New-Menu-test
New menu test
2 parents b5cc464 + 8c7474c commit a028f60

File tree

5 files changed

+159
-156
lines changed

5 files changed

+159
-156
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: 53 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,65 @@
11
#!/usr/bin/env python3
2-
from MenuLib import init, initthread, runCurrentMission
3-
from time import sleep
2+
43
loopIndex = 0
54

5+
from MenuLib import init, initthread
6+
from sys import stderr
7+
68
init('robot.cfg')
79
initthread()
810
from MenuLib import *
911
calibrate()
1012
robot.reflectCal()
13+
print("Finished Init", file=stderr)
14+
15+
def left():
16+
if not mission.is_alive():
17+
minusCount()
18+
display()
19+
else:
20+
abort()
21+
def right():
22+
if not mission.is_alive():
23+
addCount()
24+
display()
25+
else:
26+
abort()
27+
def down():
28+
if not mission.is_alive():
29+
calibrate()
30+
else:
31+
abort()
32+
def up():
33+
if not mission.is_alive():
34+
robot.reflectCal()
35+
else:
36+
abort()
37+
def enter():
38+
if not mission.is_alive():
39+
run()
40+
addCount()
41+
display()
42+
else:
43+
abort()
44+
45+
print("Functions Defined", file=stderr)
1146

12-
def left(state):
13-
if state:
14-
if not mission.is_alive():
15-
minusCount()
16-
display()
17-
else:
18-
abort()
19-
minusCount()
20-
display()
21-
def right(state):
22-
if state:
23-
if not mission.is_alive():
24-
addCount()
25-
display()
26-
else:
27-
abort()
28-
minusCount()
29-
display()
30-
def down(state):
31-
if state:
32-
if not mission.is_alive():
33-
calibrate()
34-
else:
35-
abort()
36-
minusCount()
37-
display()
38-
def up(state):
39-
if state:
40-
if not mission.is_alive():
41-
robot.reflectCal()
42-
else:
43-
abort()
44-
minusCount()
45-
display()
46-
def enter(state):
47-
if state:
48-
if not mission.is_alive():
49-
run()
50-
addCount()
51-
display()
52-
else:
53-
abort()
54-
minusCount()
55-
display()
56-
def backspace(state):
57-
pass
47+
buttonMap = {
48+
'left': left,
49+
'right': right,
50+
'enter': enter,
51+
'up': up,
52+
'down': down
53+
}
5854

59-
robot.btn.on_left = left
60-
robot.btn.on_right = right
61-
robot.btn.on_up = up
62-
robot.btn.on_down = down
63-
robot.btn.on_enter = enter
64-
robot.btn.on_backspace = backspace
55+
print("Map Defined", file=stderr)
6556

66-
while True:
67-
robot.btn.process()
57+
while True:
58+
from MenuLib import mission
59+
buttonlist = robot.btn.buttons_pressed
60+
if buttonlist:
61+
buttonMap[buttonlist[0]]()
6862
loopIndex = (loopIndex + 1) % 100
69-
displaySensor()
70-
checkDrift()
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)