1#include "IntakeAntiJam.h"
2#include "pros/rtos.hpp"
5IntakeAntiJam::IntakeAntiJam(pros::Motor& i_motor, pros::Motor& o_motor, pros::Motor& s_motor,
int temp)
12 jam_trigger_loops = 15;
13 reverse_duration_ms = 250;
17 anti_jam_enabled =
true;
20void IntakeAntiJam::enable_anti_jam(
bool enable) {
21 anti_jam_enabled = enable;
23 if (!anti_jam_enabled) {
28void IntakeAntiJam::set_velocities(
float i_vel,
float o_vel,
float s_vel) {
40void IntakeAntiJam::stop() {
41 set_velocities(0, 0, 0);
49void IntakeAntiJam::update() {
50 double max_t = std::max({
intakeMotor.get_temperature(),
53 if (max_t > maxTemp) {
60 if (!anti_jam_enabled ||
matchloader.is_extended()) {
65 bool is_stuck =
false;
67 if (std::abs(cmd_intake) > 0) {
68 std::int32_t intake_eff =
intakeMotor.get_efficiency();
69 if (intake_eff >= 7 && intake_eff <= 20) {
74 if (std::abs(cmd_storage) > 0) {
75 std::int32_t storage_eff =
storageMotor.get_efficiency();
76 if (storage_eff >= 7 && storage_eff <= 20) {
87 if (jam_counter > jam_trigger_loops) {
94 pros::delay(reverse_duration_ms);
101 is_unjamming =
false;
pros::adi::Pneumatics matchloader('C', false)
pros::Motor storageMotor(2, pros::v5::MotorGears::blue)
pros::Motor outtakeMotor(3, pros::MotorGears::blue)
pros::Motor intakeMotor(-1, pros::v5::MotorGears::blue)