23 lv_obj_t* label = lv_obj_get_child(btn, 0);
25 if (newColor == Color::RED) {
26 lv_obj_set_style_bg_color(btn, lv_palette_main(LV_PALETTE_RED), 0);
27 lv_label_set_text(label,
"RED");
29 lv_obj_set_style_bg_color(btn, lv_palette_main(LV_PALETTE_BLUE), 0);
30 lv_label_set_text(label,
"BLUE");
33 std::cout <<
"Alliance switched to: "
34 << (newColor == Color::RED ?
"Red" :
"Blue")
54 lv_obj_t* btn = lv_btn_create(lv_layer_top());
55 lv_obj_align(btn, LV_ALIGN_BOTTOM_RIGHT, -10, -10);
56 lv_obj_set_size(btn, 80, 40);
58 lv_obj_set_style_bg_color(btn, lv_palette_main(LV_PALETTE_RED), 0);
60 lv_obj_t* label = lv_label_create(btn);
61 lv_label_set_text(label,
"RED");
138 bool trapDoor_commanded =
false;
139 bool matchload_on =
false;
141 std::unique_ptr<pros::Task> longgoalTask =
nullptr;
143 int task_run_time = 0;
145 static std::atomic<bool> macro_finished{
false};
146 static std::atomic<bool> macro_abort{
false};
148 enum class ScoringMode {
149 NONE, INTAKE, OUTTAKE, MIDGOAL, LONGGOAL, MANUAL_UP
153 int throttle =
controller.get_analog(pros::E_CONTROLLER_ANALOG_LEFT_Y);
154 int steer =
controller.get_analog(pros::E_CONTROLLER_ANALOG_RIGHT_X);
156 if (
controller.get_digital_new_press(pros::E_CONTROLLER_DIGITAL_X)) {
157 trapDoor_commanded = !trapDoor_commanded;
158 if (trapDoor_commanded)
trapDoor.extend();
161 if (
controller.get_digital_new_press(pros::E_CONTROLLER_DIGITAL_B)) {
164 matchload_on =
false;
171 if (
controller.get_digital_new_press(pros::E_CONTROLLER_DIGITAL_RIGHT)) {
176 if (
controller.get_digital_new_press(pros::E_CONTROLLER_DIGITAL_A)) {
182 if (
controller.get_digital_new_press(pros::E_CONTROLLER_DIGITAL_LEFT)) {
184 if (longgoalTask !=
nullptr) {
192 macro_finished =
false;
195 longgoalTask = std::make_unique<pros::Task>([] {
200 std::abs(std::abs(pose.
y) - 47.5) < 4) {
202 int x_mult = pose.
x < 0 ? -1 : 1;
203 int y_mult = pose.
y < 0 ? -1 : 1;
205 chassis.moveToPoint(49 * x_mult, 47.5 * y_mult, 3000, {.earlyExitRange = 2});
206 if (macro_abort) { macro_finished =
true;
return; }
210 if (macro_abort) { macro_finished =
true;
return; }
213 (47.5 * y_mult) + 13.5, x_mult > 0 ? 90 : 270, 1500,
214 {.forwards =
false, .lead = 0.2, .minSpeed = 20, .earlyExitRange = 8});
215 if (macro_abort) { macro_finished =
true;
return; }
217 chassis.moveToPose(-16 * x_mult,
218 (47.5 * y_mult) + 12.5, x_mult > 0 ? 90 : 270, 1500,
219 {.forwards =
false, .lead = 0.3});
222 macro_finished =
true;
226 if (longgoalTask !=
nullptr) {
230 if (macro_finished) {
231 longgoalTask =
nullptr;
234 else if (std::abs(throttle) > 15 || std::abs(steer) > 15) {
239 else if (task_run_time > 3500) {
245 else if (task_run_time > 500) {
246 double left_vel = std::abs(
leftMotors.get_actual_velocity());
247 double right_vel = std::abs(
rightMotors.get_actual_velocity());
249 if (left_vel < 10.0 && right_vel < 10.0) {
255 if (stall_timer > 500) {
267 if (
controller.get_digital_new_press(pros::E_CONTROLLER_DIGITAL_L2)) {
274 if (
controller.get_digital(pros::E_CONTROLLER_DIGITAL_DOWN)) {
280 ScoringMode scoringMode = ScoringMode::NONE;
281 if (
controller.get_digital(pros::E_CONTROLLER_DIGITAL_L1)) {
282 scoringMode = ScoringMode::LONGGOAL;
283 }
else if (
controller.get_digital(pros::E_CONTROLLER_DIGITAL_L2)) {
284 scoringMode = ScoringMode::MIDGOAL;
285 }
else if (
controller.get_digital(pros::E_CONTROLLER_DIGITAL_UP)) {
286 scoringMode = ScoringMode::MANUAL_UP;
287 }
else if (
controller.get_digital(pros::E_CONTROLLER_DIGITAL_R2)) {
288 scoringMode = ScoringMode::OUTTAKE;
289 }
else if (
controller.get_digital(pros::E_CONTROLLER_DIGITAL_R1)) {
290 scoringMode = ScoringMode::INTAKE;
293 switch (scoringMode) {
294 case ScoringMode::INTAKE:
297 case ScoringMode::OUTTAKE:
302 case ScoringMode::MIDGOAL:
306 case ScoringMode::LONGGOAL:
309 case ScoringMode::MANUAL_UP:
313 case ScoringMode::NONE:
328 leftMotors.set_brake_mode(pros::E_MOTOR_BRAKE_COAST);
329 rightMotors.set_brake_mode(pros::E_MOTOR_BRAKE_COAST);
331 if (longgoalTask ==
nullptr) {
332 chassis.curvature(throttle, steer,
false);
rd::Selector selector({ {"Right", right_auton}, {"Left", left_auton}, {"Carry", carry_auton}, {"Elim", elim_auton}, {"AWP", awp_auton}, {"Skills", skills_auton} })
void create_alliance_selector()
void competition_initialize()
static void update_alliance_btn(lv_obj_t *btn, Color newColor)
static void alliance_btn_event_handler(lv_event_t *e)