From c2bcd19ab626cdb61d4ba05f15c764fda3dd07dc Mon Sep 17 00:00:00 2001 From: ary Date: Mon, 16 Oct 2023 22:27:45 -0400 Subject: [PATCH] robotics is beautiful final touches - finish wing logic - get respective driver controls implemented - cry a little bit --- RELENTLESS/include/globals.hpp | 6 ++++ RELENTLESS/include/superstructure.hpp | 23 ++++++++++++- RELENTLESS/src/globals.cpp | 2 ++ RELENTLESS/src/main.cpp | 12 +++++-- RELENTLESS/src/superstructure.cpp | 47 ++++++++++++++++++++++++--- 5 files changed, 83 insertions(+), 7 deletions(-) diff --git a/RELENTLESS/include/globals.hpp b/RELENTLESS/include/globals.hpp index 7661080..c30c165 100644 --- a/RELENTLESS/include/globals.hpp +++ b/RELENTLESS/include/globals.hpp @@ -1,3 +1,5 @@ +#pragma once + #include "main.h" #include "Wings.h" @@ -7,6 +9,8 @@ #define DRIVE_RATIO 0.75 #define DRIVE_RPM 450 + + namespace globals { extern pros::Controller master; @@ -33,6 +37,8 @@ namespace globals { extern pros::ADIDigitalOut left_wing_piston; extern pros::ADIDigitalOut right_wing_piston; + extern pros::ADIDigitalOut intake_piston; + extern Wings wings; extern lemlib::TrackingWheel vert_tracking_wheel; diff --git a/RELENTLESS/include/superstructure.hpp b/RELENTLESS/include/superstructure.hpp index 705c4b1..a66b041 100644 --- a/RELENTLESS/include/superstructure.hpp +++ b/RELENTLESS/include/superstructure.hpp @@ -4,6 +4,21 @@ #define TURN_SPEED 90 #define SWING_SPEED 90 +// Renu's control preferences +#define RENU_PTO_TOGGLE DIGITAL_R2 +#define RENU_CATA_CONTROL DIGITAL_R1 +#define RENU_INTAKE_CONTROL DIGITAL_L1 +#define RENU_LEFT_WING_CONTROL DIGITAL_LEFT +#define RENU_RIGHT_WING_CONTROL DIGITAL_RIGHT +#define RENU_WING_CONTROL DIGITAL_L2 + +// Ria's control preferences +#define RIA_PTO_TOGGLE DIGITAL_LEFT +#define RIA_CATA_CONTROL DIGITAL_A +#define RIA_INTAKE_CONTORL DIGITAL_R1 +#define RIA_WINGS_CONTROL DIGITAL_L1 + + namespace superstruct { //configs void chassisInit(); @@ -33,9 +48,15 @@ namespace superstruct { void setSwingScale(double val); //- Structure methods + void intakeControl(pros::controller_digital_e_t intakeButton); void togglePto(); void runCata(); - void cataControl(); + void cataControl(pros::controller_digital_e_t ptoToggleButton, pros::controller_digital_e_t cataRunButton); void wingsControl(); + void wingsControlSingle(pros::controller_digital_e_t wingControlButton); + void wingsControlComplex(pros::controller_analog_e_t leftWingButton, pros::controller_analog_e_t rightWingButton, pros::controller_analog_e_t wingButton); + + void renu_control(); + void ria_control(); } \ No newline at end of file diff --git a/RELENTLESS/src/globals.cpp b/RELENTLESS/src/globals.cpp index 50858d7..5a9b2f8 100644 --- a/RELENTLESS/src/globals.cpp +++ b/RELENTLESS/src/globals.cpp @@ -26,6 +26,8 @@ namespace globals { pros::ADIDigitalOut left_wing_piston('C'); pros::ADIDigitalOut right_wing_piston('B'); + pros::ADIDigitalOut intake_piston('D'); + Wings wings; lemlib::Drivetrain_t chassis_odom { diff --git a/RELENTLESS/src/main.cpp b/RELENTLESS/src/main.cpp index e4a8561..20f8958 100644 --- a/RELENTLESS/src/main.cpp +++ b/RELENTLESS/src/main.cpp @@ -4,6 +4,8 @@ using namespace globals; using namespace superstruct; +e_controlsch currentuser = RENU; + /** * A callback function for LLEMU's center button. * @@ -97,8 +99,14 @@ void opcontrol() { while (true) { chassis.tank_control(); - superstruct::cataControl(); - superstruct::wingsControl(); + + if (currentuser == RENU) { + renu_control(); + } else if (currentuser = RIA) { + ria_control(); + } else { + renu_control(); + } pros::delay(ary::util::DELAY_TIME); } diff --git a/RELENTLESS/src/superstructure.cpp b/RELENTLESS/src/superstructure.cpp index 1d3591a..407a218 100644 --- a/RELENTLESS/src/superstructure.cpp +++ b/RELENTLESS/src/superstructure.cpp @@ -4,6 +4,8 @@ using namespace ary; using namespace globals; bool ptoEnabled = false; +bool wingsOpen = false; +bool intakeEngaged = false; double speedScale = 1.0; double turnScale = 1.0; @@ -129,6 +131,17 @@ namespace superstruct { } // Structure methods + void intakeControl(pros::controller_digital_e_t intakeButton) { + if (globals::master.get_digital_new_press(intakeButton)) { + if (intakeEngaged == false) { + intake_piston.set_value(1); + intakeEngaged = true; + } else if (intakeEngaged == true) { + intake_piston.set_value(0); + intakeEngaged = false; + } + } + } void togglePto(bool toggle) { ptoEnabled = toggle; @@ -148,15 +161,15 @@ namespace superstruct { } int lock = 0; - void cataControl() { - if (globals::master.get_digital(DIGITAL_LEFT) && lock == 0) { + void cataControl(pros::controller_digital_e_t ptoToggleButton, pros::controller_digital_e_t cataRunButton) { + if (globals::master.get_digital(ptoToggleButton) && lock == 0) { togglePto(!ptoEnabled); lock = 1; - } else if(!globals::master.get_digital(DIGITAL_LEFT)) { + } else if(!globals::master.get_digital(ptoToggleButton)) { lock = 0; } - if (globals::master.get_digital(DIGITAL_R1)) { + if (globals::master.get_digital(cataRunButton)) { runCata(-12000); } else { runCata(0); @@ -172,4 +185,30 @@ namespace superstruct { wings.close(); } } + + void wingsControlComplex(pros::controller_analog_e_t leftWingButton, pros::controller_analog_e_t rightWingButton, pros::controller_analog_e_t wingButton) + { + + } + void wingsControlSingle(pros::controller_digital_e_t wingControlButton) { + if (globals::master.get_digital_new_press(wingControlButton)) { + if (wings.getState() == 0) + wings.open(); + else if (wings.getState() == 3) + wings.close(); + } + } + + void renu_control() { + cataControl(RENU_PTO_TOGGLE, RENU_CATA_CONTROL); + wingsControl(); + intakeControl(RENU_INTAKE_CONTROL); + + } + + void ria_control() { + cataControl(RIA_PTO_TOGGLE, RIA_CATA_CONTROL); + wingsControlSingle(RIA_WINGS_CONTROL); + intakeControl(RIA_INTAKE_CONTORL); + } } \ No newline at end of file