The autoChooser function changes the value of the controllerScreenID using the Dpad buttons on the controller, and as you can see in the previous code it takes the ID of whatever screen it is(I made an if statement in the function to change the controller screen based upon the ID to show what auto was about to be selected) on to determine what auton it ran
This is the code in the function
if (frame != controllerScreenID) {
updateController = true;
}
if (updateController) {
truit.Screen.clearScreen();
truit.Screen.setCursor(1,19);
truit.Screen.print(vexBatteryCapacityGet());
if (controllerScreenID == 0){
truit.Screen.setCursor(1,0);
truit.Screen.print("[None]");
truit.Screen.setCursor(2,0);
truit.Screen.print(" BL BR BLWP BRWP");
truit.Screen.setCursor(3,0);
truit.Screen.print(" RL RR RLWP RRWP");
truit.Screen.setCursor(0,0);
frame = 0;
updateController = false;
} else if (controllerScreenID == 1) {
truit.Screen.setCursor(1,0);
truit.Screen.print(" None");
truit.Screen.setCursor(2,0);
truit.Screen.print("[BL] BR BLWP BRWP");
truit.Screen.setCursor(3,0);
truit.Screen.print(" RL RR RLWP RRWP");
truit.Screen.setCursor(0,0);
frame = 1;
updateController = false;
} else if (controllerScreenID == 2) {
truit.Screen.setCursor(1,0);
truit.Screen.print(" None");
truit.Screen.setCursor(2,0);
truit.Screen.print(" BL [BR] BLWP BRWP");
truit.Screen.setCursor(3,0);
truit.Screen.print(" RL RR RLWP RRWP");
truit.Screen.setCursor(0,0);
frame = 2;
updateController = false;
} else if (controllerScreenID == 3) {
truit.Screen.setCursor(1,0);
truit.Screen.print(" None");
truit.Screen.setCursor(2,0);
truit.Screen.print(" BL BR [BLWP] BRWP");
truit.Screen.setCursor(3,0);
truit.Screen.print(" RL RR RLWP RRWP");
truit.Screen.setCursor(0,0);
frame = 3;
updateController = false;
} else if (controllerScreenID == 4) {
truit.Screen.setCursor(1,0);
truit.Screen.print(" None");
truit.Screen.setCursor(2,0);
truit.Screen.print(" BL BR BLWP [BRWP]");
truit.Screen.setCursor(3,0);
truit.Screen.print(" RL RR RLWP RRWP");
truit.Screen.setCursor(0,0);
frame = 4;
updateController = false;
} else if (controllerScreenID == 5) {
truit.Screen.setCursor(1,0);
truit.Screen.print(" None");
truit.Screen.setCursor(2,0);
truit.Screen.print(" BL BR BLWP BRWP");
truit.Screen.setCursor(3,0);
truit.Screen.print("[RL] RR RLWP RRWP");
truit.Screen.setCursor(0,0);
frame = 5;
updateController = false;
} else if (controllerScreenID == 6) {
truit.Screen.setCursor(1,0);
truit.Screen.print(" None");
truit.Screen.setCursor(2,0);
truit.Screen.print(" BL BR BLWP BRWP");
truit.Screen.setCursor(3,0);
truit.Screen.print(" RL [RR] RLWP RRWP");
truit.Screen.setCursor(0,0);
frame = 6;
updateController = false;
} else if (controllerScreenID == 7) {
truit.Screen.setCursor(1,0);
truit.Screen.print(" None");
truit.Screen.setCursor(2,0);
truit.Screen.print(" BL BR BLWP BRWP");
truit.Screen.setCursor(3,0);
truit.Screen.print(" RL RR [RLWP] RRWP");
truit.Screen.setCursor(0,0);
frame = 7;
updateController = false;
} else if (controllerScreenID == 8) {
truit.Screen.setCursor(1,0);
truit.Screen.print(" None");
truit.Screen.setCursor(2,0);
truit.Screen.print(" BL BR BLWP BRWP");
truit.Screen.setCursor(3,0);
truit.Screen.print(" RL RR RLWP [RRWP]");
truit.Screen.setCursor(0,0);
frame = 8;
updateController = false;
} else if (controllerScreenID == 9) {
truit.Screen.setCursor(1,1);
truit.Screen.print("Selected Autonomous:");
truit.Screen.setCursor(3,1);
truit.Screen.print("Y to Confirm");
truit.Screen.setCursor(2,1);
if (selectedAutoID == 0) {
truit.Screen.print("No Auto");
} else if(selectedAutoID == 1) {
truit.Screen.print("Blue Left");
} else if(selectedAutoID == 2) {
truit.Screen.print("Blue Right");
} else if(selectedAutoID == 3) {
truit.Screen.print("Blue Left WP");
} else if(selectedAutoID == 4) {
truit.Screen.print("Blue Right WP");
} else if(selectedAutoID == 5) {
truit.Screen.print("Red Left");
} else if(selectedAutoID == 6) {
truit.Screen.print("Red Right");
} else if(selectedAutoID == 7) {
truit.Screen.print("Red Left WP");
} else if(selectedAutoID == 8) {
truit.Screen.print("Red Right WP");
}
truit.Screen.setCursor(0,0);
frame = 9;
updateController = false;
}
}
if (truit.ButtonRight.pressing() || truit.ButtonLeft.pressing()
|| truit.ButtonUp.pressing() || truit.ButtonDown.pressing()) {
isPressedLR = true;
}
if (truit.ButtonA.pressing() || truit.ButtonB.pressing()) {
isPressedAB = true;
}
if (isPressedLR && !confirmingAuto) {
if (truit.ButtonLeft.pressing() && controllerScreenID > 0) {
controllerScreenID += -1;
waitUntil(!truit.ButtonLeft.pressing());
isPressedLR = false;
} else if (truit.ButtonRight.pressing() && controllerScreenID < 8) {
controllerScreenID += 1;
waitUntil(!truit.ButtonRight.pressing());
isPressedLR = false;
} else if (truit.ButtonUp.pressing()) {
if (controllerScreenID >= 4) {
controllerScreenID += -4;
waitUntil(!truit.ButtonRight.pressing());
isPressedLR = false;
} else {
controllerScreenID = 0;
waitUntil(!truit.ButtonRight.pressing());
isPressedLR = false;
}
} else if (truit.ButtonDown.pressing() && controllerScreenID <= 4) {
controllerScreenID += 4;
waitUntil(!truit.ButtonRight.pressing());
isPressedLR = false;
}
}
if (isPressedAB) {
if (truit.ButtonA.pressing()) {
confirmingAuto = true;
selectedAutoID = controllerScreenID;
controllerScreenID = 9;
waitUntil(!truit.ButtonA.pressing());
isPressedAB = false;
} else if (truit.ButtonB.pressing()) {
controllerScreenID = selectedAutoID;
confirmingAuto = false;
updateController = true;
waitUntil(!truit.ButtonB.pressing());
isPressedAB = false;
}
}
printf("%d\n",controllerScreenID;
if (truit.ButtonY.pressing() && confirmingAuto) {
autoConfirmed = true;
}
if (autoConfirmed || Competition.isAutonomous()) {
truit.Screen.clearScreen();
truit.Screen.setCursor(1,1);
truit.Screen.print(vexBatteryCapacityGet());
truit.Screen.setCursor(2,1);
truit.Screen.print("Auto Confirmed");
selecting = false;
}
I know it’s probabaly a nightmare to look at but from what I could test with this in driver control the selection process worked just fine, but that was before I put it in main. I tried it while it was in main and it conflicted with driver control because I use some of the same buttons in both the choosing function and teleop, but I havent gotten to test it on a field though with the robot being disabled.