12void crossBarrier(
int times = 2,
bool reverse =
false,
bool fullyDrop =
true) {
13 double targetHeading =
imu.get_heading();
14 int dir = reverse ? -1 : 1;
21 for(
int i = 0; i < times; i++) {
22 bool hasClimbed =
false;
23 bool hasDropped =
false;
25 uint32_t startTime = pros::millis();
26 uint32_t previousTime = pros::millis();
37 double currentPitch =
imu.get_roll() * dir;
38 double currentHeading =
imu.get_heading();
40 double error = targetHeading - currentHeading;
41 while (error > 180) error -= 360;
42 while (error < -180) error += 360;
60 if (hasClimbed && hasDropped) {
61 if(i == 1 && times > 1)
67 uint32_t clearStartTime = pros::millis();
70 currentHeading =
imu.get_heading();
71 error = targetHeading - currentHeading;
72 while (error > 180) error -= 360;
73 while (error < -180) error += 360;
95 leftMotors.set_brake_mode(pros::E_MOTOR_BRAKE_HOLD);
96 rightMotors.set_brake_mode(pros::E_MOTOR_BRAKE_HOLD);
102 pros::Task::delay_until(&previousTime, 10);