25 lv_obj_t* label = lv_obj_get_child(btn, 0);
27 if (newColor == Color::RED) {
28 lv_obj_set_style_bg_color(btn, lv_palette_main(LV_PALETTE_RED), 0);
29 lv_label_set_text(label,
"RED");
31 lv_obj_set_style_bg_color(btn, lv_palette_main(LV_PALETTE_BLUE), 0);
32 lv_label_set_text(label,
"BLUE");
35 std::cout <<
"Alliance switched to: "
36 << (newColor == Color::RED ?
"Red" :
"Blue")
56 lv_obj_t* btn = lv_btn_create(lv_layer_top());
57 lv_obj_align(btn, LV_ALIGN_BOTTOM_RIGHT, -10, -10);
58 lv_obj_set_size(btn, 80, 40);
60 lv_obj_set_style_bg_color(btn, lv_palette_main(LV_PALETTE_RED), 0);
62 lv_obj_t* label = lv_label_create(btn);
63 lv_label_set_text(label,
"RED");
188 bool trapDoor_commanded =
false;
189 bool matchload_on =
true;
190 float maxDeltaThrottle = 4;
191 float prevThrottle = 0;
192 float starting_pitch =
imu.get_roll();
193 float roll_forward_threshold = 1;
194 float roll_backward_threshold = -1;
197 int radio_cooldown = 50;
198 bool needs_clear =
false;
199 bool needs_print =
false;
200 bool needs_rumble =
false;
202 leftMotors.set_brake_mode(pros::E_MOTOR_BRAKE_COAST);
203 rightMotors.set_brake_mode(pros::E_MOTOR_BRAKE_COAST);
205 enum class ScoringMode {
206 NONE, INTAKE, OUTTAKE, MIDGOAL, LONGGOAL, MANUAL_UP, BRAKE
213 float throttle =
controller.get_analog(pros::E_CONTROLLER_ANALOG_LEFT_Y);
214 float steer =
controller.get_analog(pros::E_CONTROLLER_ANALOG_RIGHT_X);
216 if (std::abs(throttle) < 5) throttle = 0;
217 if (std::abs(steer) < 5) steer = 0;
220 bool isTipping = (
imu.get_roll() - starting_pitch > roll_forward_threshold ||
imu.get_roll() - starting_pitch < roll_backward_threshold);
221 bool isSlowingDown = (std::abs(throttle) < std::abs(prevThrottle));
222 bool isReversing = (prevThrottle > 0 && throttle < 0) || (prevThrottle < 0 && throttle > 0);
224 if (isTipping && (isSlowingDown || isReversing)) {
225 throttle = lemlib::slew(throttle, prevThrottle, maxDeltaThrottle);
229 if (
controller.get_digital_new_press(pros::E_CONTROLLER_DIGITAL_X)) {
238 if (radio_cooldown >= 50) {
244 else if (needs_print) {
249 else if (needs_rumble) {
251 needs_rumble =
false;
257 if(
controller.get_digital_new_press(pros::E_CONTROLLER_DIGITAL_A))
262 if (
controller.get_digital_new_press(pros::E_CONTROLLER_DIGITAL_B)) {
270 ScoringMode scoringMode = ScoringMode::NONE;
272 if (
controller.get_digital(pros::E_CONTROLLER_DIGITAL_RIGHT)) {
274 scoringMode = ScoringMode::BRAKE;
277 if (
controller.get_digital(pros::E_CONTROLLER_DIGITAL_A)) {
279 scoringMode = ScoringMode::BRAKE;
282 if (
controller.get_digital(pros::E_CONTROLLER_DIGITAL_LEFT)) {
284 scoringMode = ScoringMode::BRAKE;
287 if (
controller.get_digital(pros::E_CONTROLLER_DIGITAL_DOWN)) {
289 scoringMode = ScoringMode::BRAKE;
292 if (
controller.get_digital(pros::E_CONTROLLER_DIGITAL_L1)) {
293 scoringMode = ScoringMode::LONGGOAL;
294 }
else if (
controller.get_digital(pros::E_CONTROLLER_DIGITAL_L2)) {
295 scoringMode = ScoringMode::MIDGOAL;
296 }
else if (
controller.get_digital(pros::E_CONTROLLER_DIGITAL_UP)) {
297 scoringMode = ScoringMode::MANUAL_UP;
298 }
else if (
controller.get_digital(pros::E_CONTROLLER_DIGITAL_R2)) {
299 scoringMode = ScoringMode::OUTTAKE;
300 }
else if (
controller.get_digital(pros::E_CONTROLLER_DIGITAL_R1)) {
301 scoringMode = ScoringMode::INTAKE;
304 switch (scoringMode) {
305 case ScoringMode::INTAKE:
308 case ScoringMode::OUTTAKE:
311 case ScoringMode::MIDGOAL:
314 case ScoringMode::LONGGOAL:
317 case ScoringMode::MANUAL_UP:
319 case ScoringMode::NONE:
324 case ScoringMode::BRAKE:
331 float leftVel =
leftMotors.get_actual_velocity() * 0.00324173f;
332 float rightVel =
rightMotors.get_actual_velocity() * 0.00324173f;
333 std::cout << time <<
", " << (leftVel + rightVel) / 2 << std::endl;
335 prevThrottle = throttle;
336 radio_cooldown += 10;
Chassis chassis(drivebase, lateral_controller, angular_controller, sensors, &throttle_curve, &steer_curve)
float dynamic_steer_curve(float throttle, float steer, float min_turn_scale=0.4)
rd::Selector selector({ {"Right 7 Split", right_auton_split}, {"Right 7 Wing", right_7_wing}, {"Right Rush", right_rush}, {"Left 7 Block", left_auton_split}, {"Left Rush", left_rush}, {"AWP", awp_auton}, {"Skills", skills_auton}, {"Carry", carry_auton} })
void create_alliance_selector()
void competition_initialize()
void auton_check(std::optional< rd::Selector::routine_t > auton)
static void update_alliance_btn(lv_obj_t *btn, Color newColor)
static void alliance_btn_event_handler(lv_event_t *e)