From a2c098918fa5a7079403a185738b7ff176dc1170 Mon Sep 17 00:00:00 2001 From: Ismail Hasan Date: Wed, 31 Jan 2018 13:30:33 -0800 Subject: [PATCH 1/3] First attempt to make drive motors spin, failed attempt. --- .../org/usfirst/frc/team696/robot/Robot.class | Bin 6151 -> 14013 bytes .../usfirst/frc/team696/robot/RobotMap.class | Bin 1047 -> 1274 bytes .../frc/team696/robot/RobotTesting.class | Bin 9974 -> 2145 bytes .../team696/robot/commands/DriveCommand.class | Bin 2284 -> 2118 bytes .../subsystems/ClimberSubsystemPID.class | Bin 2609 -> 2623 bytes .../robot/subsystems/GreenLEDClimber.class | Bin 810 -> 651 bytes .../team696/robot/utilities/Constants.class | Bin 423 -> 861 bytes .../team696/robot/utilities/RGBSensor.class | Bin 1840 -> 0 bytes 2018Robot1/dist/FRCUserProgram.jar | Bin 731986 -> 732831 bytes .../org/usfirst/frc/team696/robot/Robot.java | 432 +++++++++- .../usfirst/frc/team696/robot/RobotMap.java | 46 +- .../frc/team696/robot/RobotTesting.java | 786 +++++++++--------- .../team696/robot/commands/DriveCommand.java | 4 +- .../robot/subsystems/GreenLEDClimber.java | 11 +- .../team696/robot/utilities/Constants.java | 2 +- .../team696/robot/utilities/RGBSensor.java | 134 +-- 16 files changed, 920 insertions(+), 495 deletions(-) delete mode 100644 2018Robot1/build/org/usfirst/frc/team696/robot/utilities/RGBSensor.class diff --git a/2018Robot1/build/org/usfirst/frc/team696/robot/Robot.class b/2018Robot1/build/org/usfirst/frc/team696/robot/Robot.class index b8253f66d0418355331d5561fc5b810fe5f887ea..d6a71f6a64ba9fbb93bd02b872e7da5363ed2916 100644 GIT binary patch literal 14013 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 X$X}}RD76@h@Z&jsaXtMnS%m)&KdYOm literal 6151 zcmbVQ33yyp75;CwmwA0n)6fFl(>+Z~hi;)u=$54Il(Y#=i!EDynR!iLGnp6PylGn8 zMHEF;a79sY1;mXB$pBHr4Fp6{QBmAb-1ik%^gr*-lBP3hFyEJR?sCq5&pr3tbI-g- zp1bdU0BcpJj&9tc;UhZAa7PFx?iBJ-As^H5aUEJP{E2FOQo~(3CgBc|O;=-3$K4px zFkB8ijSw=pM@KF072W$ZjOdt-Pf6#~8txC_GkBmHpVjd>d|t;F@I{$PwO~{AB!D7k?u1(HsYrmeip*d@e3ip6!I$}zZUWvA-@%=-)Z>0 zbp9aZk2<#FPlE7g4S$i5zY6)Aj-A2qvl{*`BmWTcPaW;S@V_+tTSopPHb1A~zw9XJ z*sm19RGFsAX`rgmRHcqfedntxO=&u=@Bvh{h=nwzYig20$nELwvJy$hRhZRo#Zuvc zemi``c9Wj8;&%73aAbAMCWW(Nu6^9v@0xa^E7hGmne?nah0X1b+Y?SD1C1kYH0)Vs zU(<%Bu=f*C*^0JK>qV)+or06NikPs!O=3R@^#ndX75^uzBKuZDX|w zSsRVpecje*#7z@NY#F00o*WC<8EJi9o*auweeq2p%a7N@VzOvDtH zmI%veAP~+9Qa{vpIC|7^k`{xxsf1Rt&vd<*nLOI6+jvCp6T{jUaRd|QQ3?_-A>o;@3-7+W(aVM+=UCeRn2z7_BPX1 z4a+W}b6dC}Vzt`|Yi~+!`hJNBVzoO_Gk%Fl=dzz2tniN7NrlB{i06Hh{pf>`p9Ujb zPr*3QA2U5`AOCk<#jS7W-LOt5Om9DC9yh~rGtm=nI}x?|Wh>O3+~t|k-aTf&zce2~ zLd5K(7!wN+YjfRBMt~EuqjYBB1_d&8g@J;U?lDg~{eeVH&?(Fso|W_p-RfrgFYuV& z<)qxGwZj(w=>8^Gitz?+z>NxPi^u2qch0~7P8fI-t~KyxT&qw&{*%%XF^~lP8EUZ- zp5=BrJdZ8o>lA#@5@d~JIInDryA5Ti$%Nd-{8Qh@fY4Npp{A%>np1pJg-fTYsfL=S zrqc=PYy&UF%Xn2w-{)IWRR zmp4>XvkWy`&C%3cL(Nn52Hq%+n^D|SzTcXfZ>R-op{%*cKol`eEjH8=wbW1zxY1C{ zR3n4BxPJC}<`S)e6pkBexu~rWa-LeLsj#8WSE~&4fxcX=));E7%&k*R23{*i`#K@7 z7jm7DHwd|2$cx|_>H@W1cC^8Og(HUAs2Kmv-R%#e(mjFft(8e)^4HL%7zWDi?$56Wk z>LP*a1vBWxT{#wtwS}SD1?UE~=lQs6OhsX+y#WZ1*g?O-s_}PMq?Qm9IuuqEkJ92V zn}L_(6$*2T>tx?51Fyz423~_}6c&zemY?!U=7jxrpB2lB=w>X|Y8^3Cai*%J4Wn{= z7a!k5&!$l$9o@(HfNhf3XiafT$EHxJVp?-mjDpsmV%IYj))iZ+IA*T)@z*VJ_X}BW zk<=G_Edypm5(&#~iJQr!#q?XzyXPRQj#8!C7!=;^8N!d1y2!(UV#gmQISHO3*WYIjY)^Uo_0Z{B3`*Kj(GXe2LUu~h@^V=%C;%%OTE#xoWkc)rVU$fy}{TPN7=L*?pEt z*E8EglkOgy2K#mH4%bQ0OCi6`4Wz35wl5Ntzd4zPi2o;>(FG-VqIe#@LatXyF%dCD zB=_ua`@T@2KS`#uj-s$XoA2uUebgKL9-vcXT|unQ{p92sjT4njFqqFT9o_t9G>cz) zSbnfIL!Nq{^X2q8Up=4m$?`dC37_-5@Hs05@{m-2MXscD^*O6o za-AcrhDqPTUMI@g0%kU5pc+R|b|{1LAyhQh453m;)m@w|!&^z~P(gYw=`u_~2c}W` zZ5%NI1iT&ZU{B$ldGu#cNnN0K1R8;>2N7z#8x?i>2qv*_3}bR#jf~ubDYdJcxqj`T zx~XZ@WpLIIrj20wAmbGX`C~R+1C$Z&IslnN@HH_vJC16 zG5; z@Jn!<*P({6(+M}52Ul2N&ZxaIL}nBD{rQ#7VC*e4_SR8Y1!F&uhuEFn@03%_Ybcmk zLoayLki~c~3T_(VWJGX>3koOB!1<*fxmuBiPQlmNZ&3XdA?i5$t4t zR~nHFb`RpB5wx?vCyl)sbPS?%1Q%!fY3$3OYY@vvu%AN*GPqW!h{NeDu0%h2djMW z2l(VKvOKq8g1-6ko$lK=x9{ohnV-ME{{S$B9RoKpmq!og1uq2)f>(mqf;WP&SUszO%gYu>&>PDWd< z6Dk;?S37KE<@7|S_tUdavtHQXvTy8}*Y&n~wbZp&_+a z>ydNpDzxZ?#>|wZCEvYpqJYg8^y2lr?fT1PhxWe;B*7L*EcxC^#bp^&rzBJ3FbIwp z-BUmK!lSB%u3IlJEh=Q@y}B1IC^V0a?<%B9!9E)-mc6>WelC@EoQls#dpW2&{;m^x zGQSF@qC@XYVXPd4HT(SRzzfeJ`yi~^k?WjH&rI84PzfS?OStBo&T;4Ys(-biu^pU; zRd?Bw@`Xmuw*_|ucLnzZBZ5)Em|$EmA-FGi zAb2R46xf1C=v5f`KNAX;v}pTIy=HGzj@)X*R(kl00J@Nura8(>-&)zaR(7wI2DH+H zR@%@?Ct7JnEB$DtC9QO&mBzHvn^xM>N{3o$QY(FGrB$tTtCfbe(lfOQO3s>m%9%}7 z)bzwRsIPi?ip=Psg=ZX_mkF50bIx*jk$n71uK@d2Ym6qV7^B&;Vx%%L(&-qPRE(@u zh>?@^ysR6|Fo5QS delta 495 zcmXYt%Q6E&6o&t~PmgAT7$FD=A|Y;>iEEXODo^4$vhWC5c#hQUEIfdBP}W|-LitZS zo9{cPXS&bd{bOF!r;p#acK{{sGc4lFz~WqRA-EKb1*M=8OaxbgYr#!|+XQ#>mv65+ zz@bGOxy6=XTd*VO2zCW~g07$^*hfD5^dF{{vw;EzOUPLnG}O!L74@pRsa{hT>UDKX zy`kPzGoCx237r`dc;r9^bqmbu%(%`>?99;4%z zI>Hdg>{6Wk|I7N>eE|kx4L_<8#5KaCM#Mg5pU^4S4C^eYu`uT*4>DkgjO-(1mvW5d bN`pr?(H^0NF`vKWb60%c3Ac>+vyan17GNag diff --git a/2018Robot1/build/org/usfirst/frc/team696/robot/RobotTesting.class b/2018Robot1/build/org/usfirst/frc/team696/robot/RobotTesting.class index 98d27934fc59d86eea074e02f4ef84fc1d59711d..1e935036cc5171d2118832b14ce52b4c0b3ace8a 100644 GIT binary patch delta 754 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 diff --git a/2018Robot1/build/org/usfirst/frc/team696/robot/commands/DriveCommand.class b/2018Robot1/build/org/usfirst/frc/team696/robot/commands/DriveCommand.class index 623dbf37c7de6239dee5a2adfef4a9c00630164e..5d81c399807d3099cdebeadbabe9f1f75f8a589a 100644 GIT binary patch delta 969 zcmZ{i$x;(x6opSGo%CRr!-j<@M&p1CN(_!j93tX?1{H7uR4^(k4k&C~^n$gkcIPX& z0WGX@;nIZ<;S=}_mgn3KCL1^3`Tu+WJDjfmz2(Q|_~)N*-vRVvDa1}(2~faQp(cz9 z*M#fB4Pi_e7bZO146z|Cy5-@vf_H?w!lW=2Vk4$?x+mNh9tbnSY|u$Q)Uh7m5grRq zLd@Z*wt1$+a}V<#UaYKDGvxscMc9pEggwGup;Oo|bP3%;kI;*vgZ8B0wuNJJ^Yw)Y z2XHVM$@We5DP0l{31wjbCnFrg@ra*-*TcdQ;e=wlblQiahnEpv>GB#29^OQFi^T{R zwbxP2D<`#VN8-En%>fmE>c-7N26KA31Uv zr*X#KFXJpbI2Nn&l(my=r0-OcD%w}EZ4KMs&wj?%6^1gXkRcVQ z^2a$3jf~Rgh|`%a!|T1enN}~SS)I4QXiKHjSk~naFwCr$=%K1Gll>&x+_ZAMr84uc z@&ZT3Y3YAw&a_lEXY$`@%q%x%=DNP3qq%TucadLZsii@#G1|wa^#;j1zvS;wp@T~D L#V>i6ZTFGC4C-AY delta 1103 zcmaiyO-~b17=_RDYdXV(00}IpfLg5zsMJ=!k8v5 z5|@Y>VwSi}Tp{L&t2(ZkXmE?J>$t(oo5U^RHgU&9BknSqCo;qWVH1l+zc9;i$v_VG zOx(vZqZJ}gteSX$hg`0}cWXL|I@Y(|r981Aj9b`;h=u*c0iuWKB@PmYh{Hr5A{s)@ zFK?SUlUuP17NR)f40`+WF{b0hQQ{aegwqxVaLPhIkH?7<#31kXGU`S|N6Eq?Z0LAw z;R&~SiVX|Tn0}5II?5Ja;+2I-=1y{hn3M2!I&+>@=Z81l+O%vh7Do!Xl0BNwtS;CE z4PBGmv7ve%(9pqixR&=9>@~Znp}CODF8x*OO!%_puowlj!Qhe-fd(lRkCci{q6YU@ zXK_ran5I;GQ!3Ue759{ifl9?TQ3GO|QgKeHmK;Cvt@ZDb zEcam<`#1Y783ly z6KIwfgAs%GWOmLX-T($RhCl``hG3veLMOLz`f^4xa4TU2fW%8DAr^149qEgz#@}U$BtvM3zx;oj!Yf*T#+)Hm diff --git a/2018Robot1/build/org/usfirst/frc/team696/robot/subsystems/GreenLEDClimber.class b/2018Robot1/build/org/usfirst/frc/team696/robot/subsystems/GreenLEDClimber.class index bb3fdbe89073c76145a2ac83b7f9da29df8f4cf2..a7495c5edb86d156a723dc7c38fe484488c4adf8 100644 GIT binary patch delta 329 zcmZ3**3Bw<>ff$?3=9k=3{qSS%nah}3=-@Nk`v=wI62abQd9GMTwNwU%wlF?;G5jR zm{HFJR09Gm42(d`3MAQpJX;{m1f*HDwlgqp1TvTy*nuP$Sdbs6P>_KG$QOesV&DYI zfB-84HvF#8Y}QH%JQ)+Y}IO%52Vv7-F&bq z^DNGsv_)(`Sf^7fUrY&miD7Xf5L+b95PdyTMdEr{nySfApuWLCb*mlI?Qt+;opJ;t z_Gn|w8&pJoYbPu6fqrh7w0)|_oqhFAg*bz@z}i1dg-gQ_0a_t0U@^o+tO(ry-zy5- z{Cm?uby2zVdpcO9XZ7j11^v{XtVcf4kUdM$ONwi>&UcR>y5CTH(>X%@3%pO1tYMby zEb3(EsPG(p^W*`G)uA$`kg@?5NK)WD+EeMfER_;Wzy&PHE6s&0Gd&@3 zW(vBW;dKr%b6Q~e1VeDl5MT+*Bq4aZQ>nXU4EQW{h{i{ft!`DJteimck5M{h)umq% Cvzzw- diff --git a/2018Robot1/build/org/usfirst/frc/team696/robot/utilities/Constants.class b/2018Robot1/build/org/usfirst/frc/team696/robot/utilities/Constants.class index c7a56e91da3891ea7f2f441bb29480c117155f5a..d12ab740a4d4cc45b35554cae35d197f7f1443d4 100644 GIT binary patch literal 861 zcmb7?+iuf95QhIvoVZDyLrXay%9+-bn$QxcijbOANJtS}1XV3}cDhNoICf;O5q%e4 zf(r|Y3m$-nLdc*#1pwUy2{E+b#KKVgNE33VD;D<+kqBx%|TKbGF?)2hh z57xWTx|xW%}QHG$TDd!lFK-d^ZOBkyByE(e-y z)afq)k*Zjsh(<9}@?>(dWt5y5C38l}pHZ@Clw2AmqejWAQL;-~!5yp{y=#=-iibda zK&#(TqzLG^KOx+Djsm0TS~)DYl%wR9bCg{>hwT<~EODX2g{r%hW0~Q&P1;lYL0>80 zA+e1bu?Pz#>RzTh@|OOK>> mcrj?&8`joWTmpZQ<%q&s0W_(uP*o)r|1Y{VQpQ;5n0x_BxDQnT diff --git a/2018Robot1/build/org/usfirst/frc/team696/robot/utilities/RGBSensor.class b/2018Robot1/build/org/usfirst/frc/team696/robot/utilities/RGBSensor.class deleted file mode 100644 index 802fb0f6237e81db9dd689989ee33be7ac2ceabb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1840 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

1z8W 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

@q%;7Ge~v*X)IimcH{ZcTYSqre1PSe`?m; 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 delta 32366 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 xjtL}G+T)4TP;J*_gv4h@{0v*-{{b{KGQj`< diff --git a/2018Robot1/src/org/usfirst/frc/team696/robot/Robot.java b/2018Robot1/src/org/usfirst/frc/team696/robot/Robot.java index e2b9161..d927dd5 100644 --- a/2018Robot1/src/org/usfirst/frc/team696/robot/Robot.java +++ b/2018Robot1/src/org/usfirst/frc/team696/robot/Robot.java @@ -15,8 +15,9 @@ import edu.wpi.first.wpilibj.smartdashboard.SendableChooser; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; import org.usfirst.frc.team696.robot.autonomousCommands.CenterPosition; +import org.usfirst.frc.team696.robot.commands.DriveCommand; import org.usfirst.frc.team696.robot.subsystems.*; -import org.usfirst.frc.team696.robot.utilities.RGBSensor; +//import org.usfirst.frc.team696.robot.utilities.RGBSensor; import org.usfirst.frc.team696.robot.utilities.Constants; /** @@ -33,7 +34,7 @@ public class Robot extends TimedRobot { public static final ClimberSubsystem climberSubsystem = new ClimberSubsystem(RobotMap.leftClimber, RobotMap.rightClimber); public static final ClimberSubsystemPID climberSubsystemPID = new ClimberSubsystemPID(RobotMap.leftClimber, RobotMap.rightClimber, RobotMap.hookDeploy); public static final GreenLEDClimber greenLEDClimber = new GreenLEDClimber(RobotMap.greenLED); - public static final RGBSensor rgbSensorUtility = new RGBSensor(rgbSensor); +// public static final RGBSensor rgbSensorUtility = new RGBSensor(rgbSensor); public static final Constants constants = new Constants(); @@ -59,8 +60,8 @@ public class Robot extends TimedRobot { Drive variables and Objects */ - public static Encoder leftDriveEncoder = new Encoder(1, 1); - public static Encoder rightDriveEncoder = new Encoder(2, 2); +// public static Encoder leftDriveEncoder = new Encoder(1, 1); +// public static Encoder rightDriveEncoder = new Encoder(2, 2); double commandedTurn; double commandedDrive; @@ -79,6 +80,27 @@ public class Robot extends TimedRobot { public double climberSpeed = 0; + int testDriveMotors = 0; + boolean testElevator = false; + boolean testIntakeMotors = false; + + int leftRearCurrent = RobotMap.leftRearCurrent; + int leftMidCurrent = RobotMap.leftMidCurrent; + int leftFrontCurrent = RobotMap.leftFrontCurrent; + int rightRearCurrent = RobotMap.rightRearCurrent; + int rightMidCurrent = RobotMap.rightMidCurrent; + int rightFrontCurrent = RobotMap.rightFrontCurrent; + int leftIntakeCurrent = RobotMap.leftIntakeCurrent; + int rightIntakeCurrent = RobotMap.rightIntakeCurrent; + + int num = 1; + Timer time = new Timer(); + + double minCurrent = 50; + double halfSpeed = 0.5; + double noSpeed = 0; + + /** @@ -215,7 +237,7 @@ public void teleopPeriodic() { leftDrive = speed + wheel; rightDrive = speed - wheel; - System.out.println(rgbSensorUtility.read16(0x18)); +// System.out.println(rgbSensorUtility.read16(0x18)); driveTrainSubsystem.tankDrive(leftDrive, rightDrive); @@ -229,5 +251,405 @@ public void teleopPeriodic() { */ @Override public void testPeriodic() { + + /** + * Elevator PIDF Values + */ + + + SmartDashboard.putNumber("Elevator P Value", ElevatorSubsystem.kP); + SmartDashboard.putNumber("Elevator I Value", ElevatorSubsystem.kI); + SmartDashboard.putNumber("Elevator D Value", ElevatorSubsystem.kD); + SmartDashboard.putNumber("Elevator F Value", ElevatorSubsystem.kF); + + /** + * Autonomous Drive PID Values + */ + + SmartDashboard.putNumber("Distance P Value", DriveCommand.kPa); + SmartDashboard.putNumber("Distance I Value", DriveCommand.kIa); + SmartDashboard.putNumber("Distance D Value", DriveCommand.kDa); + SmartDashboard.putNumber("Distance F Value", DriveCommand.kFa); + + SmartDashboard.putNumber("Direction P Value", DriveCommand.kPb); + SmartDashboard.putNumber("Direction I Value", DriveCommand.kIb); + SmartDashboard.putNumber("Direction D Value", DriveCommand.kDb); + SmartDashboard.putNumber("Direction F Value", DriveCommand.kFb); + + SmartDashboard.putNumber("Target Distance (Testing)", DriveCommand.targetDistance); + SmartDashboard.putNumber("Target Direction (Testing)", DriveCommand.tempTargetDirection); + + SmartDashboard.putNumber("Test Drive Motors", testDriveMotors); + + + + + /** + * Testing Talons + */ + + //Drive Talons + + + // TODO Implement Automatic Test Intake Motors function + + if(testDriveMotors == 1){ + switch (num) { + case 1: + driveTrainSubsystem.leftRear.set(halfSpeed); + time.start(); + if (time.get() > 3 && Math.abs(driveTrainSubsystem.leftRear.get()) > 0 && getCurrent(leftRearCurrent) > minCurrent) { + driveTrainSubsystem.leftRear.set(noSpeed); + restartTimer(); + if (time.get() > 1) { + time.stop(); + time.reset(); + driveTrainSubsystem.leftRear.set(-halfSpeed); + time.start(); + } + if (time.get() > 3 && driveTrainSubsystem.leftRear.get() > 0 && getCurrent(leftRearCurrent) > minCurrent) { + driveTrainSubsystem.leftRear.set(noSpeed); + num++; + time.stop(); + time.reset(); +// break; + } else if (time.get() > 3 && !(Math.abs(driveTrainSubsystem.leftRear.get()) > 0) || time.get() > 3 && !(getCurrent(leftRearCurrent) > minCurrent)) { + System.out.println("Left Rear Drive Motor " + driveTrainSubsystem.leftRear.getDeviceID() + " is not functioning properly. "); + driveTrainSubsystem.leftRear.set(noSpeed); + time.stop(); + time.reset(); + testDriveMotors = 0; + resetNum(); + break; + } + } else if (time.get() > 3 && !(Math.abs(driveTrainSubsystem.leftRear.get()) > 0) || time.get() > 3 && !(getCurrent(leftRearCurrent) > minCurrent)) { + System.out.println("Left Rear Drive Motor " + driveTrainSubsystem.leftRear.getDeviceID() + " is not functioning properly."); + driveTrainSubsystem.leftRear.set(noSpeed); + time.stop(); + time.reset(); + testDriveMotors = 0; + resetNum(); + break; + } + + case 2: + driveTrainSubsystem.leftMid.set(halfSpeed); + time.start(); + if (time.get() > 3 && Math.abs(driveTrainSubsystem.leftRear.get()) > 0 && getCurrent(leftMidCurrent) > minCurrent) { + driveTrainSubsystem.leftMid.set(noSpeed); + restartTimer(); + if (time.get() > 1) { + time.stop(); + time.reset(); + driveTrainSubsystem.leftMid.set(-halfSpeed); + time.start(); + } + if (time.get() > 3 && Math.abs(driveTrainSubsystem.leftRear.get()) > 0 && getCurrent(leftMidCurrent) > minCurrent) { + driveTrainSubsystem.leftMid.set(noSpeed); + num++; + time.stop(); + time.reset(); +// break; + } else if (time.get() > 3 && !(Math.abs(driveTrainSubsystem.leftRear.get()) > 0)) { + System.out.println("Left Mid Drive Motor " + driveTrainSubsystem.leftMid.getDeviceID() + " is not functioning properly. "); + driveTrainSubsystem.leftMid.set(0); + time.stop(); + time.reset(); + testDriveMotors = 0; + resetNum(); + break; + } + } else if (time.get() > 3 && !(Math.abs(driveTrainSubsystem.leftRear.get()) > 0)) { + System.out.println("Left Mid Drive Motor " + driveTrainSubsystem.leftMid.getDeviceID() + " is not functioning properly."); + driveTrainSubsystem.leftMid.set(0); + time.stop(); + time.reset(); + testDriveMotors = 0; + resetNum(); + break; + } + + case 3: + driveTrainSubsystem.leftFront.set(0.5); + time.start(); + if (time.get() > 3 && driveTrainSubsystem.leftFront.get() > 0 && getCurrent(leftFrontCurrent) > minCurrent) { + driveTrainSubsystem.leftFront.set(0); + restartTimer(); + if (time.get() > 1) { + time.stop(); + time.reset(); + driveTrainSubsystem.leftFront.set(-0.5); + time.start(); + } + if (time.get() > 3 && driveTrainSubsystem.leftFront.get() > 0 && getCurrent(leftFrontCurrent) > minCurrent) { + driveTrainSubsystem.leftFront.set(0); + num++; + time.stop(); + time.reset(); +// break; + } else if (time.get() > 3 && !(driveTrainSubsystem.leftFront.get() > 0) || time.get() > 3 && !(getCurrent(leftFrontCurrent) > minCurrent)) { + System.out.println("Left Front Drive Motor " + driveTrainSubsystem.leftFront.getDeviceID() + " is not functioning properly. "); + driveTrainSubsystem.leftMid.set(0); + time.stop(); + time.reset(); + testDriveMotors = 0; + resetNum(); + break; + } + } else if (time.get() > 3 && !(driveTrainSubsystem.leftFront.get() > 0) || time.get() > 3 && !(getCurrent(leftFrontCurrent) > minCurrent)) { + System.out.println("Left Front Drive Motor " + driveTrainSubsystem.leftFront.getDeviceID() + " is not functioning properly."); + driveTrainSubsystem.leftFront.set(0); + time.stop(); + time.reset(); + testDriveMotors = 0; + resetNum(); + break; + } + + case 4: + driveTrainSubsystem.rightRear.set(0.5); + time.start(); + if (time.get() > 3 && driveTrainSubsystem.rightRear.get() > 0 && getCurrent(rightRearCurrent) > minCurrent) { + driveTrainSubsystem.rightRear.set(0); + restartTimer(); + if (time.get() > 1) { + time.stop(); + time.reset(); + driveTrainSubsystem.rightRear.set(-0.5); + time.start(); + } + if (time.get() > 3 && driveTrainSubsystem.rightRear.get() > 0 && getCurrent(rightRearCurrent) > minCurrent) { + driveTrainSubsystem.rightRear.set(0); + num++; + time.stop(); + time.reset(); +// break; + } else if (time.get() > 3 && !(driveTrainSubsystem.rightRear.get() > 0) || time.get() > 3 && getCurrent(rightRearCurrent) > minCurrent) { + System.out.println("Right Rear Drive Motor " + driveTrainSubsystem.rightRear.getDeviceID() + " is not functioning properly. "); + driveTrainSubsystem.rightRear.set(0); + time.stop(); + time.reset(); + testDriveMotors = 0; + resetNum(); + break; + } + } else if (time.get() > 3 && !(driveTrainSubsystem.rightRear.get() > 0) || time.get() > 3 && getCurrent(rightRearCurrent) > minCurrent) { + System.out.println("Right Rear Drive Motor " + driveTrainSubsystem.leftMid.getDeviceID() + " is not functioning properly."); + driveTrainSubsystem.rightRear.set(0); + time.stop(); + time.reset(); + testDriveMotors = 0; + resetNum(); + break; + } + + case 5: + driveTrainSubsystem.rightMid.set(0.5); + time.start(); + if (time.get() > 3 && driveTrainSubsystem.rightMid.get() > 0 && getCurrent(rightMidCurrent) > minCurrent) { + driveTrainSubsystem.rightMid.set(0); + restartTimer(); + if (time.get() > 1) { + time.stop(); + time.reset(); + driveTrainSubsystem.rightMid.set(-0.5); + time.start(); + } + if (time.get() > 3 && driveTrainSubsystem.rightMid.get() > 0 && getCurrent(rightMidCurrent) > minCurrent) { + driveTrainSubsystem.rightMid.set(0); + num++; + time.stop(); + time.reset(); +// break; + } else if (time.get() > 3 && !(driveTrainSubsystem.rightMid.get() > 0) || time.get() > 3 && getCurrent(rightMidCurrent) > minCurrent) { + System.out.println("Right Mid Drive Motor " + driveTrainSubsystem.leftMid.getDeviceID() + " is not functioning properly. "); + driveTrainSubsystem.rightMid.set(0); + time.stop(); + time.reset(); + testDriveMotors = 0; + resetNum(); + break; + } + } else if (time.get() > 3 && !(driveTrainSubsystem.rightMid.get() > 0) || time.get() > 3 && getCurrent(rightMidCurrent) > minCurrent) { + System.out.println("Right Mid Drive Motor " + driveTrainSubsystem.rightMid.getDeviceID() + " is not functioning properly."); + driveTrainSubsystem.rightMid.set(0); + time.stop(); + time.reset(); + testDriveMotors = 0; + resetNum(); + break; + } + + case 6: + time.start(); + driveTrainSubsystem.rightFront.set(0.5); + time.start(); + if (time.get() > 3 && driveTrainSubsystem.rightFront.get() > 0 && getCurrent(rightFrontCurrent) > minCurrent) { + driveTrainSubsystem.rightFront.set(0); + restartTimer(); + if (time.get() > 1) { + time.stop(); + time.reset(); + driveTrainSubsystem.rightFront.set(-0.5); + time.start(); + } + if (time.get() > 3 && driveTrainSubsystem.rightFront.get() > 0 && getCurrent(rightFrontCurrent) > minCurrent) { + driveTrainSubsystem.rightMid.set(0); + num++; + time.stop(); + time.reset(); +// break; + } else if (time.get() > 3 && !(driveTrainSubsystem.rightFront.get() > 0) || time.get() > 3 && getCurrent(rightFrontCurrent) > minCurrent) { + System.out.println("Right Front Drive Motor " + driveTrainSubsystem.rightFront.getDeviceID() + " is not functioning properly. "); + driveTrainSubsystem.rightFront.set(0); + time.stop(); + time.reset(); + testDriveMotors = 0; + resetNum(); + break; + } + } else if (time.get() > 3 && !(driveTrainSubsystem.rightFront.get() > 0) || time.get() > 3 && getCurrent(rightFrontCurrent) > minCurrent) { + System.out.println("Right Front Drive Motor " + driveTrainSubsystem.rightFront.getDeviceID() + " is not functioning properly."); + driveTrainSubsystem.rightFront.set(0); + time.stop(); + time.reset(); + testDriveMotors = 0; + resetNum(); + break; + } + + default: + System.out.println("All drive motors functional."); + resetNum(); + time.stop(); + time.reset(); + testDriveMotors = 0; + break; + } + } + + // Elevator Talons + + if(testElevator){ + + switch(num){ + + case 1: + + time.start(); + elevatorSubsystem.moveToPos("switch"); + if(elevatorSubsystem.checkError() < 2 && time.get() > 5){ + time.stop(); + time.reset(); + time.start(); + num++; + break; + }else if(!(elevatorSubsystem.checkError() < 2) && time.get() > 10){ + System.out.println("Move to Switch movement not functioning properly."); + time.stop(); + time.reset(); + num = 1; + testElevator = false; + break; + } + + case 2: + elevatorSubsystem.moveToPos("ground"); + if(elevatorSubsystem.checkError() < 2 && time.get() > 5){ + time.stop(); + time.reset(); + time.start(); + num++; + break; + }else if(!(elevatorSubsystem.checkError() < 2) && time.get() > 5){ + System.out.println("Move to Ground movement not functioning properly."); + time.stop(); + time.reset(); + num = 1; + testElevator = false; + break; + } + + case 3: + elevatorSubsystem.moveToPos("scale"); + if(elevatorSubsystem.checkError() < 2 && time.get() > 5){ + time.stop(); + time.reset(); + time.start(); + break; + }else if(!(elevatorSubsystem.checkError() < 2) && time.get() > 10){ + System.out.println("Move to Scale movement not functioning properly."); + time.stop(); + time.reset(); + num = 1; + testElevator = false; + break; + } + + case 4: + elevatorSubsystem.moveToPos("climb"); + if(elevatorSubsystem.checkError() < 2 && time.get() > 5){ + time.stop(); + time.reset(); + time.start(); + num++; + break; + }else if(!(elevatorSubsystem.checkError() < 2) && time.get() > 10){ + System.out.println("Move to Climb movement not functioning properly"); + time.stop(); + time.reset(); + num = 1; + testElevator = false; + break; + } + + default: + System.out.println("Elevator motion and control good to go!"); + time.stop(); + time.reset(); + num = 1; + testElevator = false; + + } + + } + + // Intake Motors + + if(testIntakeMotors){ + + switch(num){ + + case 1: + time.start(); + intakeSubsystem.runLeftIntake(0.5); + if(time.get() > 3 && getCurrent(leftIntakeCurrent) > 50){ + intakeSubsystem.runLeftIntake(0); + restartTimer(); + if(time.get() > 2){ + intakeSubsystem.runLeftIntake(-0.5); + restartTimer(); + } + }else if(time.get() > 5 && !(getCurrent(leftIntakeCurrent) > 50)){ + } + + } + } + } + + private double getCurrent(int currentPort){ + return Robot.PDP.getCurrent(currentPort); + } + + private void resetNum() { + num = 1; + } + + private void restartTimer() { + time.stop(); + time.reset(); + time.start(); + } + } diff --git a/2018Robot1/src/org/usfirst/frc/team696/robot/RobotMap.java b/2018Robot1/src/org/usfirst/frc/team696/robot/RobotMap.java index 910b0c6..d915d97 100644 --- a/2018Robot1/src/org/usfirst/frc/team696/robot/RobotMap.java +++ b/2018Robot1/src/org/usfirst/frc/team696/robot/RobotMap.java @@ -18,40 +18,40 @@ public class RobotMap { /* Drive Base */ - public static int leftFront; - public static int leftMid; - public static int leftRear; - public static int rightFront; - public static int rightMid; - public static int rightRear; - - public static int leftRearCurrent; - public static int leftMidCurrent; - public static int leftFrontCurrent; - public static int rightRearCurrent; - public static int rightMidCurrent; - public static int rightFrontCurrent; + public static int leftFront = 14; + public static int leftMid = 15; + public static int leftRear = 16; + public static int rightFront = 3; + public static int rightMid = 2; + public static int rightRear = 1; + + public static int leftRearCurrent = 13; + public static int leftMidCurrent = 14; + public static int leftFrontCurrent = 15; + public static int rightRearCurrent = 0; + public static int rightMidCurrent = 1; + public static int rightFrontCurrent = 2; /* Elevator */ - public static int leftIntake = 1; - public static int rightIntake = 2; - public static int leftElevator = 3; - public static int rightElevator = 4; + public static int leftIntake = 4; + public static int rightIntake = 5; + public static int leftElevator = 6; + public static int rightElevator = 8; - public static int leftIntakeCurrent = 1; - public static int rightIntakeCurrent = 2; + public static int leftIntakeCurrent = 3; + public static int rightIntakeCurrent = 4; /* Climber */ - public static int leftClimber = 1; - public static int rightClimber = 3; - public static int hookDeploy = 2; - public static int greenLED = 0; + public static int leftClimber = 9; + public static int rightClimber = 10; + public static int hookDeploy = 1; + public static int greenLED = 12; } \ No newline at end of file diff --git a/2018Robot1/src/org/usfirst/frc/team696/robot/RobotTesting.java b/2018Robot1/src/org/usfirst/frc/team696/robot/RobotTesting.java index 37168ae..0d5db94 100644 --- a/2018Robot1/src/org/usfirst/frc/team696/robot/RobotTesting.java +++ b/2018Robot1/src/org/usfirst/frc/team696/robot/RobotTesting.java @@ -16,7 +16,7 @@ public class RobotTesting extends TimedRobot { DriveTrainSubsystem driveTrainSubsystem = new DriveTrainSubsystem(RobotMap.leftRear, RobotMap.leftMid, RobotMap.leftFront, - RobotMap.rightRear, RobotMap.rightMid, RobotMap.rightFront); + RobotMap.rightRear, RobotMap.rightMid, RobotMap.rightFront); ElevatorSubsystem elevatorSubsystem = new ElevatorSubsystem(RobotMap.leftElevator, RobotMap.rightElevator); IntakeSubsystem intakeSubsystem = new IntakeSubsystem(RobotMap.leftIntake, RobotMap.rightIntake); @@ -45,404 +45,404 @@ public class RobotTesting extends TimedRobot { public void testPeriodic() { - /** - * Elevator PIDF Values - */ - - - SmartDashboard.putNumber("Elevator P Value", ElevatorSubsystem.kP); - SmartDashboard.putNumber("Elevator I Value", ElevatorSubsystem.kI); - SmartDashboard.putNumber("Elevator D Value", ElevatorSubsystem.kD); - SmartDashboard.putNumber("Elevator F Value", ElevatorSubsystem.kF); - - /** - * Autonomous Drive PID Values - */ - - SmartDashboard.putNumber("Distance P Value", DriveCommand.kPa); - SmartDashboard.putNumber("Distance I Value", DriveCommand.kIa); - SmartDashboard.putNumber("Distance D Value", DriveCommand.kDa); - SmartDashboard.putNumber("Distance F Value", DriveCommand.kFa); - - SmartDashboard.putNumber("Direction P Value", DriveCommand.kPb); - SmartDashboard.putNumber("Direction I Value", DriveCommand.kIb); - SmartDashboard.putNumber("Direction D Value", DriveCommand.kDb); - SmartDashboard.putNumber("Direction F Value", DriveCommand.kFb); - - SmartDashboard.putNumber("Target Distance (Testing)", DriveCommand.targetDistance); - SmartDashboard.putNumber("Target Direction (Testing)", DriveCommand.tempTargetDirection); - - - /** - * Testing Talons - */ - - SmartDashboard.putBoolean("Test Drive Motors", testDriveMotors); - SmartDashboard.putBoolean("Test Elevator", testElevator); - SmartDashboard.putBoolean("Test Intake Motors", testIntakeMotors); - - //Drive Talons - - - // TODO Implement Automatic Test Intake Motors function - - if(testDriveMotors){ - switch (num) { - case 1: - driveTrainSubsystem.leftRear.set(halfSpeed); - time.start(); - if (time.get() > 3 && Math.abs(driveTrainSubsystem.leftRear.get()) > 0 && getCurrent(leftRearCurrent) > minCurrent) { - driveTrainSubsystem.leftRear.set(noSpeed); - restartTimer(); - if (time.get() > 1) { - time.stop(); - time.reset(); - driveTrainSubsystem.leftRear.set(-halfSpeed); - time.start(); - } - if (time.get() > 3 && driveTrainSubsystem.leftRear.get() > 0 && getCurrent(leftRearCurrent) > minCurrent) { - driveTrainSubsystem.leftRear.set(noSpeed); - num++; - time.stop(); - time.reset(); +// /** +// * Elevator PIDF Values +// */ +// +// +// SmartDashboard.putNumber("Elevator P Value", ElevatorSubsystem.kP); +// SmartDashboard.putNumber("Elevator I Value", ElevatorSubsystem.kI); +// SmartDashboard.putNumber("Elevator D Value", ElevatorSubsystem.kD); +// SmartDashboard.putNumber("Elevator F Value", ElevatorSubsystem.kF); +// +// /** +// * Autonomous Drive PID Values +// */ +// +// SmartDashboard.putNumber("Distance P Value", DriveCommand.kPa); +// SmartDashboard.putNumber("Distance I Value", DriveCommand.kIa); +// SmartDashboard.putNumber("Distance D Value", DriveCommand.kDa); +// SmartDashboard.putNumber("Distance F Value", DriveCommand.kFa); +// +// SmartDashboard.putNumber("Direction P Value", DriveCommand.kPb); +// SmartDashboard.putNumber("Direction I Value", DriveCommand.kIb); +// SmartDashboard.putNumber("Direction D Value", DriveCommand.kDb); +// SmartDashboard.putNumber("Direction F Value", DriveCommand.kFb); +// +// SmartDashboard.putNumber("Target Distance (Testing)", DriveCommand.targetDistance); +// SmartDashboard.putNumber("Target Direction (Testing)", DriveCommand.tempTargetDirection); +// +// +// +// +// /** +// * Testing Talons +// */ +// +// //Drive Talons +// +// +// // TODO Implement Automatic Test Intake Motors function +// +// if(testDriveMotors){ +// switch (num) { +// case 1: +// driveTrainSubsystem.leftRear.set(halfSpeed); +// time.start(); +// if (time.get() > 3 && Math.abs(driveTrainSubsystem.leftRear.get()) > 0 && getCurrent(leftRearCurrent) > minCurrent) { +// driveTrainSubsystem.leftRear.set(noSpeed); +// restartTimer(); +// if (time.get() > 1) { +// time.stop(); +// time.reset(); +// driveTrainSubsystem.leftRear.set(-halfSpeed); +// time.start(); +// } +// if (time.get() > 3 && driveTrainSubsystem.leftRear.get() > 0 && getCurrent(leftRearCurrent) > minCurrent) { +// driveTrainSubsystem.leftRear.set(noSpeed); +// num++; +// time.stop(); +// time.reset(); +//// break; +// } else if (time.get() > 3 && !(Math.abs(driveTrainSubsystem.leftRear.get()) > 0) || time.get() > 3 && !(getCurrent(leftRearCurrent) > minCurrent)) { +// System.out.println("Left Rear Drive Motor " + driveTrainSubsystem.leftRear.getDeviceID() + " is not functioning properly. "); +// driveTrainSubsystem.leftRear.set(noSpeed); +// time.stop(); +// time.reset(); +// testDriveMotors = false; +// resetNum(); // break; - } else if (time.get() > 3 && !(Math.abs(driveTrainSubsystem.leftRear.get()) > 0) || time.get() > 3 && !(getCurrent(leftRearCurrent) > minCurrent)) { - System.out.println("Left Rear Drive Motor " + driveTrainSubsystem.leftRear.getDeviceID() + " is not functioning properly. "); - driveTrainSubsystem.leftRear.set(noSpeed); - time.stop(); - time.reset(); - testDriveMotors = false; - resetNum(); - break; - } - } else if (time.get() > 3 && !(Math.abs(driveTrainSubsystem.leftRear.get()) > 0) || time.get() > 3 && !(getCurrent(leftRearCurrent) > minCurrent)) { - System.out.println("Left Rear Drive Motor " + driveTrainSubsystem.leftRear.getDeviceID() + " is not functioning properly."); - driveTrainSubsystem.leftRear.set(noSpeed); - time.stop(); - time.reset(); - testDriveMotors = false; - resetNum(); - break; - } - - case 2: - driveTrainSubsystem.leftMid.set(halfSpeed); - time.start(); - if (time.get() > 3 && Math.abs(driveTrainSubsystem.leftRear.get()) > 0 && getCurrent(leftMidCurrent) > minCurrent) { - driveTrainSubsystem.leftMid.set(noSpeed); - restartTimer(); - if (time.get() > 1) { - time.stop(); - time.reset(); - driveTrainSubsystem.leftMid.set(-halfSpeed); - time.start(); - } - if (time.get() > 3 && Math.abs(driveTrainSubsystem.leftRear.get()) > 0 && getCurrent(leftMidCurrent) > minCurrent) { - driveTrainSubsystem.leftMid.set(noSpeed); - num++; - time.stop(); - time.reset(); +// } +// } else if (time.get() > 3 && !(Math.abs(driveTrainSubsystem.leftRear.get()) > 0) || time.get() > 3 && !(getCurrent(leftRearCurrent) > minCurrent)) { +// System.out.println("Left Rear Drive Motor " + driveTrainSubsystem.leftRear.getDeviceID() + " is not functioning properly."); +// driveTrainSubsystem.leftRear.set(noSpeed); +// time.stop(); +// time.reset(); +// testDriveMotors = false; +// resetNum(); +// break; +// } +// +// case 2: +// driveTrainSubsystem.leftMid.set(halfSpeed); +// time.start(); +// if (time.get() > 3 && Math.abs(driveTrainSubsystem.leftRear.get()) > 0 && getCurrent(leftMidCurrent) > minCurrent) { +// driveTrainSubsystem.leftMid.set(noSpeed); +// restartTimer(); +// if (time.get() > 1) { +// time.stop(); +// time.reset(); +// driveTrainSubsystem.leftMid.set(-halfSpeed); +// time.start(); +// } +// if (time.get() > 3 && Math.abs(driveTrainSubsystem.leftRear.get()) > 0 && getCurrent(leftMidCurrent) > minCurrent) { +// driveTrainSubsystem.leftMid.set(noSpeed); +// num++; +// time.stop(); +// time.reset(); +//// break; +// } else if (time.get() > 3 && !(Math.abs(driveTrainSubsystem.leftRear.get()) > 0)) { +// System.out.println("Left Mid Drive Motor " + driveTrainSubsystem.leftMid.getDeviceID() + " is not functioning properly. "); +// driveTrainSubsystem.leftMid.set(0); +// time.stop(); +// time.reset(); +// testDriveMotors = false; +// resetNum(); // break; - } else if (time.get() > 3 && !(Math.abs(driveTrainSubsystem.leftRear.get()) > 0)) { - System.out.println("Left Mid Drive Motor " + driveTrainSubsystem.leftMid.getDeviceID() + " is not functioning properly. "); - driveTrainSubsystem.leftMid.set(0); - time.stop(); - time.reset(); - testDriveMotors = false; - resetNum(); - break; - } - } else if (time.get() > 3 && !(Math.abs(driveTrainSubsystem.leftRear.get()) > 0)) { - System.out.println("Left Mid Drive Motor " + driveTrainSubsystem.leftMid.getDeviceID() + " is not functioning properly."); - driveTrainSubsystem.leftMid.set(0); - time.stop(); - time.reset(); - testDriveMotors = false; - resetNum(); - break; - } - - case 3: - driveTrainSubsystem.leftFront.set(0.5); - time.start(); - if (time.get() > 3 && driveTrainSubsystem.leftFront.get() > 0 && getCurrent(leftFrontCurrent) > minCurrent) { - driveTrainSubsystem.leftFront.set(0); - restartTimer(); - if (time.get() > 1) { - time.stop(); - time.reset(); - driveTrainSubsystem.leftFront.set(-0.5); - time.start(); - } - if (time.get() > 3 && driveTrainSubsystem.leftFront.get() > 0 && getCurrent(leftFrontCurrent) > minCurrent) { - driveTrainSubsystem.leftFront.set(0); - num++; - time.stop(); - time.reset(); +// } +// } else if (time.get() > 3 && !(Math.abs(driveTrainSubsystem.leftRear.get()) > 0)) { +// System.out.println("Left Mid Drive Motor " + driveTrainSubsystem.leftMid.getDeviceID() + " is not functioning properly."); +// driveTrainSubsystem.leftMid.set(0); +// time.stop(); +// time.reset(); +// testDriveMotors = false; +// resetNum(); +// break; +// } +// +// case 3: +// driveTrainSubsystem.leftFront.set(0.5); +// time.start(); +// if (time.get() > 3 && driveTrainSubsystem.leftFront.get() > 0 && getCurrent(leftFrontCurrent) > minCurrent) { +// driveTrainSubsystem.leftFront.set(0); +// restartTimer(); +// if (time.get() > 1) { +// time.stop(); +// time.reset(); +// driveTrainSubsystem.leftFront.set(-0.5); +// time.start(); +// } +// if (time.get() > 3 && driveTrainSubsystem.leftFront.get() > 0 && getCurrent(leftFrontCurrent) > minCurrent) { +// driveTrainSubsystem.leftFront.set(0); +// num++; +// time.stop(); +// time.reset(); +//// break; +// } else if (time.get() > 3 && !(driveTrainSubsystem.leftFront.get() > 0) || time.get() > 3 && !(getCurrent(leftFrontCurrent) > minCurrent)) { +// System.out.println("Left Front Drive Motor " + driveTrainSubsystem.leftFront.getDeviceID() + " is not functioning properly. "); +// driveTrainSubsystem.leftMid.set(0); +// time.stop(); +// time.reset(); +// testDriveMotors = false; +// resetNum(); // break; - } else if (time.get() > 3 && !(driveTrainSubsystem.leftFront.get() > 0) || time.get() > 3 && !(getCurrent(leftFrontCurrent) > minCurrent)) { - System.out.println("Left Front Drive Motor " + driveTrainSubsystem.leftFront.getDeviceID() + " is not functioning properly. "); - driveTrainSubsystem.leftMid.set(0); - time.stop(); - time.reset(); - testDriveMotors = false; - resetNum(); - break; - } - } else if (time.get() > 3 && !(driveTrainSubsystem.leftFront.get() > 0) || time.get() > 3 && !(getCurrent(leftFrontCurrent) > minCurrent)) { - System.out.println("Left Front Drive Motor " + driveTrainSubsystem.leftFront.getDeviceID() + " is not functioning properly."); - driveTrainSubsystem.leftFront.set(0); - time.stop(); - time.reset(); - testDriveMotors = false; - resetNum(); - break; - } - - case 4: - driveTrainSubsystem.rightRear.set(0.5); - time.start(); - if (time.get() > 3 && driveTrainSubsystem.rightRear.get() > 0 && getCurrent(rightRearCurrent) > minCurrent) { - driveTrainSubsystem.rightRear.set(0); - restartTimer(); - if (time.get() > 1) { - time.stop(); - time.reset(); - driveTrainSubsystem.rightRear.set(-0.5); - time.start(); - } - if (time.get() > 3 && driveTrainSubsystem.rightRear.get() > 0 && getCurrent(rightRearCurrent) > minCurrent) { - driveTrainSubsystem.rightRear.set(0); - num++; - time.stop(); - time.reset(); +// } +// } else if (time.get() > 3 && !(driveTrainSubsystem.leftFront.get() > 0) || time.get() > 3 && !(getCurrent(leftFrontCurrent) > minCurrent)) { +// System.out.println("Left Front Drive Motor " + driveTrainSubsystem.leftFront.getDeviceID() + " is not functioning properly."); +// driveTrainSubsystem.leftFront.set(0); +// time.stop(); +// time.reset(); +// testDriveMotors = false; +// resetNum(); +// break; +// } +// +// case 4: +// driveTrainSubsystem.rightRear.set(0.5); +// time.start(); +// if (time.get() > 3 && driveTrainSubsystem.rightRear.get() > 0 && getCurrent(rightRearCurrent) > minCurrent) { +// driveTrainSubsystem.rightRear.set(0); +// restartTimer(); +// if (time.get() > 1) { +// time.stop(); +// time.reset(); +// driveTrainSubsystem.rightRear.set(-0.5); +// time.start(); +// } +// if (time.get() > 3 && driveTrainSubsystem.rightRear.get() > 0 && getCurrent(rightRearCurrent) > minCurrent) { +// driveTrainSubsystem.rightRear.set(0); +// num++; +// time.stop(); +// time.reset(); +//// break; +// } else if (time.get() > 3 && !(driveTrainSubsystem.rightRear.get() > 0) || time.get() > 3 && getCurrent(rightRearCurrent) > minCurrent) { +// System.out.println("Right Rear Drive Motor " + driveTrainSubsystem.rightRear.getDeviceID() + " is not functioning properly. "); +// driveTrainSubsystem.rightRear.set(0); +// time.stop(); +// time.reset(); +// testDriveMotors = false; +// resetNum(); // break; - } else if (time.get() > 3 && !(driveTrainSubsystem.rightRear.get() > 0) || time.get() > 3 && getCurrent(rightRearCurrent) > minCurrent) { - System.out.println("Right Rear Drive Motor " + driveTrainSubsystem.rightRear.getDeviceID() + " is not functioning properly. "); - driveTrainSubsystem.rightRear.set(0); - time.stop(); - time.reset(); - testDriveMotors = false; - resetNum(); - break; - } - } else if (time.get() > 3 && !(driveTrainSubsystem.rightRear.get() > 0) || time.get() > 3 && getCurrent(rightRearCurrent) > minCurrent) { - System.out.println("Right Rear Drive Motor " + driveTrainSubsystem.leftMid.getDeviceID() + " is not functioning properly."); - driveTrainSubsystem.rightRear.set(0); - time.stop(); - time.reset(); - testDriveMotors = false; - resetNum(); - break; - } - - case 5: - driveTrainSubsystem.rightMid.set(0.5); - time.start(); - if (time.get() > 3 && driveTrainSubsystem.rightMid.get() > 0 && getCurrent(rightMidCurrent) > minCurrent) { - driveTrainSubsystem.rightMid.set(0); - restartTimer(); - if (time.get() > 1) { - time.stop(); - time.reset(); - driveTrainSubsystem.rightMid.set(-0.5); - time.start(); - } - if (time.get() > 3 && driveTrainSubsystem.rightMid.get() > 0 && getCurrent(rightMidCurrent) > minCurrent) { - driveTrainSubsystem.rightMid.set(0); - num++; - time.stop(); - time.reset(); +// } +// } else if (time.get() > 3 && !(driveTrainSubsystem.rightRear.get() > 0) || time.get() > 3 && getCurrent(rightRearCurrent) > minCurrent) { +// System.out.println("Right Rear Drive Motor " + driveTrainSubsystem.leftMid.getDeviceID() + " is not functioning properly."); +// driveTrainSubsystem.rightRear.set(0); +// time.stop(); +// time.reset(); +// testDriveMotors = false; +// resetNum(); +// break; +// } +// +// case 5: +// driveTrainSubsystem.rightMid.set(0.5); +// time.start(); +// if (time.get() > 3 && driveTrainSubsystem.rightMid.get() > 0 && getCurrent(rightMidCurrent) > minCurrent) { +// driveTrainSubsystem.rightMid.set(0); +// restartTimer(); +// if (time.get() > 1) { +// time.stop(); +// time.reset(); +// driveTrainSubsystem.rightMid.set(-0.5); +// time.start(); +// } +// if (time.get() > 3 && driveTrainSubsystem.rightMid.get() > 0 && getCurrent(rightMidCurrent) > minCurrent) { +// driveTrainSubsystem.rightMid.set(0); +// num++; +// time.stop(); +// time.reset(); +//// break; +// } else if (time.get() > 3 && !(driveTrainSubsystem.rightMid.get() > 0) || time.get() > 3 && getCurrent(rightMidCurrent) > minCurrent) { +// System.out.println("Right Mid Drive Motor " + driveTrainSubsystem.leftMid.getDeviceID() + " is not functioning properly. "); +// driveTrainSubsystem.rightMid.set(0); +// time.stop(); +// time.reset(); +// testDriveMotors = false; +// resetNum(); // break; - } else if (time.get() > 3 && !(driveTrainSubsystem.rightMid.get() > 0) || time.get() > 3 && getCurrent(rightMidCurrent) > minCurrent) { - System.out.println("Right Mid Drive Motor " + driveTrainSubsystem.leftMid.getDeviceID() + " is not functioning properly. "); - driveTrainSubsystem.rightMid.set(0); - time.stop(); - time.reset(); - testDriveMotors = false; - resetNum(); - break; - } - } else if (time.get() > 3 && !(driveTrainSubsystem.rightMid.get() > 0) || time.get() > 3 && getCurrent(rightMidCurrent) > minCurrent) { - System.out.println("Right Mid Drive Motor " + driveTrainSubsystem.rightMid.getDeviceID() + " is not functioning properly."); - driveTrainSubsystem.rightMid.set(0); - time.stop(); - time.reset(); - testDriveMotors = false; - resetNum(); - break; - } - - case 6: - time.start(); - driveTrainSubsystem.rightFront.set(0.5); - time.start(); - if (time.get() > 3 && driveTrainSubsystem.rightFront.get() > 0 && getCurrent(rightFrontCurrent) > minCurrent) { - driveTrainSubsystem.rightFront.set(0); - restartTimer(); - if (time.get() > 1) { - time.stop(); - time.reset(); - driveTrainSubsystem.rightFront.set(-0.5); - time.start(); - } - if (time.get() > 3 && driveTrainSubsystem.rightFront.get() > 0 && getCurrent(rightFrontCurrent) > minCurrent) { - driveTrainSubsystem.rightMid.set(0); - num++; - time.stop(); - time.reset(); +// } +// } else if (time.get() > 3 && !(driveTrainSubsystem.rightMid.get() > 0) || time.get() > 3 && getCurrent(rightMidCurrent) > minCurrent) { +// System.out.println("Right Mid Drive Motor " + driveTrainSubsystem.rightMid.getDeviceID() + " is not functioning properly."); +// driveTrainSubsystem.rightMid.set(0); +// time.stop(); +// time.reset(); +// testDriveMotors = false; +// resetNum(); +// break; +// } +// +// case 6: +// time.start(); +// driveTrainSubsystem.rightFront.set(0.5); +// time.start(); +// if (time.get() > 3 && driveTrainSubsystem.rightFront.get() > 0 && getCurrent(rightFrontCurrent) > minCurrent) { +// driveTrainSubsystem.rightFront.set(0); +// restartTimer(); +// if (time.get() > 1) { +// time.stop(); +// time.reset(); +// driveTrainSubsystem.rightFront.set(-0.5); +// time.start(); +// } +// if (time.get() > 3 && driveTrainSubsystem.rightFront.get() > 0 && getCurrent(rightFrontCurrent) > minCurrent) { +// driveTrainSubsystem.rightMid.set(0); +// num++; +// time.stop(); +// time.reset(); +//// break; +// } else if (time.get() > 3 && !(driveTrainSubsystem.rightFront.get() > 0) || time.get() > 3 && getCurrent(rightFrontCurrent) > minCurrent) { +// System.out.println("Right Front Drive Motor " + driveTrainSubsystem.rightFront.getDeviceID() + " is not functioning properly. "); +// driveTrainSubsystem.rightFront.set(0); +// time.stop(); +// time.reset(); +// testDriveMotors = false; +// resetNum(); // break; - } else if (time.get() > 3 && !(driveTrainSubsystem.rightFront.get() > 0) || time.get() > 3 && getCurrent(rightFrontCurrent) > minCurrent) { - System.out.println("Right Front Drive Motor " + driveTrainSubsystem.rightFront.getDeviceID() + " is not functioning properly. "); - driveTrainSubsystem.rightFront.set(0); - time.stop(); - time.reset(); - testDriveMotors = false; - resetNum(); - break; - } - } else if (time.get() > 3 && !(driveTrainSubsystem.rightFront.get() > 0) || time.get() > 3 && getCurrent(rightFrontCurrent) > minCurrent) { - System.out.println("Right Front Drive Motor " + driveTrainSubsystem.rightFront.getDeviceID() + " is not functioning properly."); - driveTrainSubsystem.rightFront.set(0); - time.stop(); - time.reset(); - testDriveMotors = false; - resetNum(); - break; - } - - default: - System.out.println("All drive motors functional."); - resetNum(); - time.stop(); - time.reset(); - testDriveMotors = false; - break; - } - } - - // Elevator Talons - - if(testElevator){ +// } +// } else if (time.get() > 3 && !(driveTrainSubsystem.rightFront.get() > 0) || time.get() > 3 && getCurrent(rightFrontCurrent) > minCurrent) { +// System.out.println("Right Front Drive Motor " + driveTrainSubsystem.rightFront.getDeviceID() + " is not functioning properly."); +// driveTrainSubsystem.rightFront.set(0); +// time.stop(); +// time.reset(); +// testDriveMotors = false; +// resetNum(); +// break; +// } +// +// default: +// System.out.println("All drive motors functional."); +// resetNum(); +// time.stop(); +// time.reset(); +// testDriveMotors = false; +// break; +// } +// } +// +// // Elevator Talons +// +// if(testElevator){ +// +// switch(num){ +// +// case 1: +// +// time.start(); +// elevatorSubsystem.moveToPos("switch"); +// if(elevatorSubsystem.checkError() < 2 && time.get() > 5){ +// time.stop(); +// time.reset(); +// time.start(); +// num++; +// break; +// }else if(!(elevatorSubsystem.checkError() < 2) && time.get() > 10){ +// System.out.println("Move to Switch movement not functioning properly."); +// time.stop(); +// time.reset(); +// num = 1; +// testElevator = false; +// break; +// } +// +// case 2: +// elevatorSubsystem.moveToPos("ground"); +// if(elevatorSubsystem.checkError() < 2 && time.get() > 5){ +// time.stop(); +// time.reset(); +// time.start(); +// num++; +// break; +// }else if(!(elevatorSubsystem.checkError() < 2) && time.get() > 5){ +// System.out.println("Move to Ground movement not functioning properly."); +// time.stop(); +// time.reset(); +// num = 1; +// testElevator = false; +// break; +// } +// +// case 3: +// elevatorSubsystem.moveToPos("scale"); +// if(elevatorSubsystem.checkError() < 2 && time.get() > 5){ +// time.stop(); +// time.reset(); +// time.start(); +// break; +// }else if(!(elevatorSubsystem.checkError() < 2) && time.get() > 10){ +// System.out.println("Move to Scale movement not functioning properly."); +// time.stop(); +// time.reset(); +// num = 1; +// testElevator = false; +// break; +// } +// +// case 4: +// elevatorSubsystem.moveToPos("climb"); +// if(elevatorSubsystem.checkError() < 2 && time.get() > 5){ +// time.stop(); +// time.reset(); +// time.start(); +// num++; +// break; +// }else if(!(elevatorSubsystem.checkError() < 2) && time.get() > 10){ +// System.out.println("Move to Climb movement not functioning properly"); +// time.stop(); +// time.reset(); +// num = 1; +// testElevator = false; +// break; +// } +// +// default: +// System.out.println("Elevator motion and control good to go!"); +// time.stop(); +// time.reset(); +// num = 1; +// testElevator = false; +// +// } +// +// } +// +// // Intake Motors +// +// if(testIntakeMotors){ +// +// switch(num){ +// +// case 1: +// time.start(); +// intakeSubsystem.runLeftIntake(0.5); +// if(time.get() > 3 && getCurrent(leftIntakeCurrent) > 50){ +// intakeSubsystem.runLeftIntake(0); +// restartTimer(); +// if(time.get() > 2){ +// intakeSubsystem.runLeftIntake(-0.5); +// restartTimer(); +// } +// }else if(time.get() > 5 && !(getCurrent(leftIntakeCurrent) > 50)){ +// } +// +// } +// } +// +// } +// +// private double getCurrent(int currentPort){ +// return Robot.PDP.getCurrent(currentPort); +// } +// +// private void resetNum() { +// num = 1; +// } +// +// private void restartTimer() { +// time.stop(); +// time.reset(); +// time.start(); +// } - switch(num){ - case 1: - - time.start(); - elevatorSubsystem.moveToPos("switch"); - if(elevatorSubsystem.checkError() < 2 && time.get() > 5){ - time.stop(); - time.reset(); - time.start(); - num++; - break; - }else if(!(elevatorSubsystem.checkError() < 2) && time.get() > 10){ - System.out.println("Move to Switch movement not functioning properly."); - time.stop(); - time.reset(); - num = 1; - testElevator = false; - break; - } - - case 2: - elevatorSubsystem.moveToPos("ground"); - if(elevatorSubsystem.checkError() < 2 && time.get() > 5){ - time.stop(); - time.reset(); - time.start(); - num++; - break; - }else if(!(elevatorSubsystem.checkError() < 2) && time.get() > 5){ - System.out.println("Move to Ground movement not functioning properly."); - time.stop(); - time.reset(); - num = 1; - testElevator = false; - break; - } - - case 3: - elevatorSubsystem.moveToPos("scale"); - if(elevatorSubsystem.checkError() < 2 && time.get() > 5){ - time.stop(); - time.reset(); - time.start(); - break; - }else if(!(elevatorSubsystem.checkError() < 2) && time.get() > 10){ - System.out.println("Move to Scale movement not functioning properly."); - time.stop(); - time.reset(); - num = 1; - testElevator = false; - break; - } - - case 4: - elevatorSubsystem.moveToPos("climb"); - if(elevatorSubsystem.checkError() < 2 && time.get() > 5){ - time.stop(); - time.reset(); - time.start(); - num++; - break; - }else if(!(elevatorSubsystem.checkError() < 2) && time.get() > 10){ - System.out.println("Move to Climb movement not functioning properly"); - time.stop(); - time.reset(); - num = 1; - testElevator = false; - break; - } - - default: - System.out.println("Elevator motion and control good to go!"); - time.stop(); - time.reset(); - num = 1; - testElevator = false; - - } - - } - - // Intake Motors - - if(testIntakeMotors){ - - switch(num){ - - case 1: - time.start(); - intakeSubsystem.runLeftIntake(0.5); - if(time.get() > 3 && getCurrent(leftIntakeCurrent) > 50){ - intakeSubsystem.runLeftIntake(0); - restartTimer(); - if(time.get() > 2){ - intakeSubsystem.runLeftIntake(-0.5); - restartTimer(); - } - }else if(time.get() > 5 && !(getCurrent(leftIntakeCurrent) > 50)){ - } - - } - } - - } - - private double getCurrent(int currentPort){ - return Robot.PDP.getCurrent(currentPort); } - - private void resetNum() { - num = 1; - } - - private void restartTimer() { - time.stop(); - time.reset(); - time.start(); - } - -} +} \ No newline at end of file diff --git a/2018Robot1/src/org/usfirst/frc/team696/robot/commands/DriveCommand.java b/2018Robot1/src/org/usfirst/frc/team696/robot/commands/DriveCommand.java index 2070dff..bd8ebf3 100644 --- a/2018Robot1/src/org/usfirst/frc/team696/robot/commands/DriveCommand.java +++ b/2018Robot1/src/org/usfirst/frc/team696/robot/commands/DriveCommand.java @@ -62,8 +62,8 @@ public DriveCommand(double distance, double direction, double maxSpeed, double r */ @Override protected void initialize() { - Robot.leftDriveEncoder.reset(); - Robot.rightDriveEncoder.reset(); +// Robot.leftDriveEncoder.reset(); +// Robot.rightDriveEncoder.reset(); tempTargetDirection = Robot.targetDirection + Robot.navX.getYaw(); diff --git a/2018Robot1/src/org/usfirst/frc/team696/robot/subsystems/GreenLEDClimber.java b/2018Robot1/src/org/usfirst/frc/team696/robot/subsystems/GreenLEDClimber.java index 42de02f..159b24d 100644 --- a/2018Robot1/src/org/usfirst/frc/team696/robot/subsystems/GreenLEDClimber.java +++ b/2018Robot1/src/org/usfirst/frc/team696/robot/subsystems/GreenLEDClimber.java @@ -10,10 +10,10 @@ // Put methods for controlling this subsystem // here. Call these from Commands. - DigitalOutput greenLED; +// DigitalOutput greenLED; public GreenLEDClimber(int greenLED) { - this.greenLED = new DigitalOutput(greenLED); +// this.greenLED = new DigitalOutput(greenLED); } @@ -22,11 +22,14 @@ public void initDefaultCommand() { // setDefaultCommand(new MySpecialCommand()); } public void set(boolean state) { - greenLED.set(state); +// greenLED.set(state); } - public boolean get() { return greenLED.get(); } + public boolean get() { +// return greenLED.get(); + return true; + } } diff --git a/2018Robot1/src/org/usfirst/frc/team696/robot/utilities/Constants.java b/2018Robot1/src/org/usfirst/frc/team696/robot/utilities/Constants.java index 6d9909f..da7c60c 100644 --- a/2018Robot1/src/org/usfirst/frc/team696/robot/utilities/Constants.java +++ b/2018Robot1/src/org/usfirst/frc/team696/robot/utilities/Constants.java @@ -15,7 +15,7 @@ public class Constants { public int buttonY = 4; public int leftXAxis = 0; public int leftYAxis = 1; - public int rightXAxis = 4; + public int rightXAxis = 2; public int rightYAxis = 5; public int leftBumper = 5; public int rightBumper = 6; diff --git a/2018Robot1/src/org/usfirst/frc/team696/robot/utilities/RGBSensor.java b/2018Robot1/src/org/usfirst/frc/team696/robot/utilities/RGBSensor.java index bfbd33e..2708fa8 100644 --- a/2018Robot1/src/org/usfirst/frc/team696/robot/utilities/RGBSensor.java +++ b/2018Robot1/src/org/usfirst/frc/team696/robot/utilities/RGBSensor.java @@ -1,68 +1,68 @@ -package org.usfirst.frc.team696.robot.utilities; - -import edu.wpi.first.wpilibj.I2C; - -public class RGBSensor { - - static double seconds; - public static Timer timer = new Timer(seconds); - - I2C rgbSensor; - byte sensorAddress = 0x29; - byte sensorEnableAddress = 0x00; - byte sensorEnable_PON = 0x01; - byte sensorEnable_AEN = 0x02; - byte sensorCommand_Bit = (byte) 0x80; - public byte sensorClearL = 0x14; - public byte sensorRedL = 0x16; - public byte sensorGreenL = 0x18; - public byte sensorBlueL = 0x1A; - byte[] buffer1 = new byte[1]; - byte[] buffer2 = new byte[2]; - int[] RGBC = new int[4]; - - public RGBSensor(I2C rgbSensor) { - this.rgbSensor = rgbSensor; - - RGBC[0] = read16(sensorClearL); - RGBC[1] = read16(sensorRedL); - RGBC[2] = read16(sensorGreenL); - RGBC[3] = read16(sensorBlueL); - } - - public void enable() { - rgbSensor.write(sensorEnableAddress, sensorEnable_PON); - timer.runTimer(3); - rgbSensor.write(sensorEnableAddress, sensorEnable_PON | sensorEnable_AEN); - - } - - public byte read8(byte reg) { -// rgbSensor.write(sensorCommand_Bit, reg); - timer.runTimer(3); - rgbSensor.read(sensorCommand_Bit | reg, 1, buffer1); - - return reg; - } - - public int read16(int reg){ - - int t; - int x; - -// rgbSensor.write(sensorCommand_Bit | reg, 2); +//package org.usfirst.frc.team696.robot.utilities; +// +//import edu.wpi.first.wpilibj.I2C; +// +//public class RGBSensor { +// +// static double seconds; +// public static Timer timer = new Timer(seconds); +// +// I2C rgbSensor; +// byte sensorAddress = 0x29; +// byte sensorEnableAddress = 0x00; +// byte sensorEnable_PON = 0x01; +// byte sensorEnable_AEN = 0x02; +// byte sensorCommand_Bit = (byte) 0x80; +// public byte sensorClearL = 0x14; +// public byte sensorRedL = 0x16; +// public byte sensorGreenL = 0x18; +// public byte sensorBlueL = 0x1A; +// byte[] buffer1 = new byte[1]; +// byte[] buffer2 = new byte[2]; +// int[] RGBC = new int[4]; +// +// public RGBSensor(I2C rgbSensor) { +// this.rgbSensor = rgbSensor; +// +// RGBC[0] = read16(sensorClearL); +// RGBC[1] = read16(sensorRedL); +// RGBC[2] = read16(sensorGreenL); +// RGBC[3] = read16(sensorBlueL); +// } +// +// public void enable() { +// rgbSensor.write(sensorEnableAddress, sensorEnable_PON); // timer.runTimer(3); - rgbSensor.read(sensorCommand_Bit | reg, 2, buffer2); - - t = buffer2[0]; - x = buffer2[1]; - - x <<=8; - x |= t; - - return x; - - - } - -} +// rgbSensor.write(sensorEnableAddress, sensorEnable_PON | sensorEnable_AEN); +// +// } +// +// public byte read8(byte reg) { +//// rgbSensor.write(sensorCommand_Bit, reg); +// timer.runTimer(3); +// rgbSensor.read(sensorCommand_Bit | reg, 1, buffer1); +// +// return reg; +// } +// +// public int read16(int reg){ +// +// int t; +// int x; +// +//// rgbSensor.write(sensorCommand_Bit | reg, 2); +//// timer.runTimer(3); +// rgbSensor.read(sensorCommand_Bit | reg, 2, buffer2); +// +// t = buffer2[0]; +// x = buffer2[1]; +// +// x <<=8; +// x |= t; +// +// return x; +// +// +// } +// +//} From c78bf5cacedb11b6bc7b60ccc27cac081f60e8ae Mon Sep 17 00:00:00 2001 From: Ismail Hasan Date: Sun, 11 Feb 2018 13:47:09 -0800 Subject: [PATCH 2/3] 2018Robot2 Merge Changes. Unimportant commit --- .../nav6/IMUProtocol$GyroUpdate.class | Bin 0 -> 576 bytes .../nav6/IMUProtocol$QuaternionUpdate.class | Bin 0 -> 595 bytes .../nav6/IMUProtocol$StreamCommand.class | Bin 0 -> 433 bytes .../nav6/IMUProtocol$StreamResponse.class | Bin 0 -> 639 bytes .../nav6/IMUProtocol$YPRUpdate.class | Bin 0 -> 470 bytes .../bin/com/kauailabs/nav6/IMUProtocol.class | Bin 0 -> 8856 bytes .../bin/com/kauailabs/nav6/frc/IMU.class | Bin 0 -> 7786 bytes .../com/kauailabs/nav6/frc/IMUAdvanced.class | Bin 0 -> 5854 bytes .../navx_mxp/AHRSProtocol$AHRSUpdate.class | Bin 0 -> 1026 bytes .../AHRSProtocol$AHRS_DATA_ACTION.class | Bin 0 -> 641 bytes .../AHRSProtocol$AHRS_DATA_TYPE.class | Bin 0 -> 687 bytes .../AHRSProtocol$AHRS_TUNING_VAR_ID.class | Bin 0 -> 793 bytes .../navx_mxp/AHRSProtocol$BoardID.class | Bin 0 -> 564 bytes .../AHRSProtocol$DataSetResponse.class | Bin 0 -> 487 bytes .../navx_mxp/AHRSProtocol$MagCalData.class | Bin 0 -> 572 bytes .../navx_mxp/AHRSProtocol$TuningVar.class | Bin 0 -> 469 bytes .../com/kauailabs/navx_mxp/AHRSProtocol.class | Bin 0 -> 12992 bytes .../org/usfirst/frc/team696/robot/OI.class | Bin 0 -> 506 bytes .../org/usfirst/frc/team696/robot/Robot.class | Bin 0 -> 4406 bytes .../usfirst/frc/team696/robot/RobotMap.class | Bin 0 -> 587 bytes .../robot/commands/ExampleCommand.class | Bin 0 -> 930 bytes .../subsystems/DriveTrainSubsystem.class | Bin 0 -> 2115 bytes .../robot/subsystems/ExampleSubsystem.class | Bin 0 -> 456 bytes ScorpiusCustom/.idea/misc.xml | 6 + ScorpiusCustom/.idea/workspace.xml | 277 ++++++++++++++++++ 25 files changed, 283 insertions(+) create mode 100644 2018Robot2/bin/com/kauailabs/nav6/IMUProtocol$GyroUpdate.class create mode 100644 2018Robot2/bin/com/kauailabs/nav6/IMUProtocol$QuaternionUpdate.class create mode 100644 2018Robot2/bin/com/kauailabs/nav6/IMUProtocol$StreamCommand.class create mode 100644 2018Robot2/bin/com/kauailabs/nav6/IMUProtocol$StreamResponse.class create mode 100644 2018Robot2/bin/com/kauailabs/nav6/IMUProtocol$YPRUpdate.class create mode 100644 2018Robot2/bin/com/kauailabs/nav6/IMUProtocol.class create mode 100644 2018Robot2/bin/com/kauailabs/nav6/frc/IMU.class create mode 100644 2018Robot2/bin/com/kauailabs/nav6/frc/IMUAdvanced.class create mode 100644 2018Robot2/bin/com/kauailabs/navx_mxp/AHRSProtocol$AHRSUpdate.class create mode 100644 2018Robot2/bin/com/kauailabs/navx_mxp/AHRSProtocol$AHRS_DATA_ACTION.class create mode 100644 2018Robot2/bin/com/kauailabs/navx_mxp/AHRSProtocol$AHRS_DATA_TYPE.class create mode 100644 2018Robot2/bin/com/kauailabs/navx_mxp/AHRSProtocol$AHRS_TUNING_VAR_ID.class create mode 100644 2018Robot2/bin/com/kauailabs/navx_mxp/AHRSProtocol$BoardID.class create mode 100644 2018Robot2/bin/com/kauailabs/navx_mxp/AHRSProtocol$DataSetResponse.class create mode 100644 2018Robot2/bin/com/kauailabs/navx_mxp/AHRSProtocol$MagCalData.class create mode 100644 2018Robot2/bin/com/kauailabs/navx_mxp/AHRSProtocol$TuningVar.class create mode 100644 2018Robot2/bin/com/kauailabs/navx_mxp/AHRSProtocol.class create mode 100644 2018Robot2/bin/org/usfirst/frc/team696/robot/OI.class create mode 100644 2018Robot2/bin/org/usfirst/frc/team696/robot/Robot.class create mode 100644 2018Robot2/bin/org/usfirst/frc/team696/robot/RobotMap.class create mode 100644 2018Robot2/bin/org/usfirst/frc/team696/robot/commands/ExampleCommand.class create mode 100644 2018Robot2/bin/org/usfirst/frc/team696/robot/subsystems/DriveTrainSubsystem.class create mode 100644 2018Robot2/bin/org/usfirst/frc/team696/robot/subsystems/ExampleSubsystem.class create mode 100644 ScorpiusCustom/.idea/misc.xml create mode 100644 ScorpiusCustom/.idea/workspace.xml diff --git a/2018Robot2/bin/com/kauailabs/nav6/IMUProtocol$GyroUpdate.class b/2018Robot2/bin/com/kauailabs/nav6/IMUProtocol$GyroUpdate.class new file mode 100644 index 0000000000000000000000000000000000000000..7bf8d8c1361ef517e7a679ba5e8e05f462822582 GIT binary patch literal 576 zcma)(%SyvQ6o&ulEjC7b@qSluVHM0q+$e4el|sEhZMS7Q9cpTlDM?za&*DqC5?uHI zK9qP8r|3%D%=e%3&-rthe0;vW131C1i8MA0Y#G>Q$n__I>O3;A=Cqhh#S??Ug^+IS zYelA3WlHRZ*D6~e!x#K(01w;Cv(q_n1RZlV$8jdfoM_yM3cf9LT zr`%A2yKNpgajlz~=-vq#%uCv`HSF<-E?RZpmqFF#VJOKvY6#`o4}8QOmv=+k=i^hm ze$~1SRHTG*_kU*3D5FC$w~u36h&`kYSU>=jPq>3g}Shb1~-bEKp+q&VzLd@og#MZA@&f|fAC{m2`>Bq zKT3Sv7C~GHZr-`?zQ--9>f`h69Y75g6=|$1*i^8^kh-rjuy!mC<8l<28iT@3Q`o(S ziF%xU$?Y!pt+}j+*|S}=wG=KT=)Tg zlsE}p=tgjJX3jY?XJ9_R-ah~wVar1UYcAGZYzVaTB9oNf7teDkAkGDxQ>9gLCeYa1 zp9t82nX=Ohm6lg!8p-UIqJ)(}Xktnxl&Oj@MZ0)Zxj=VZrv@fXNlyhjBdui?B$Vfp z?O_<3)PJIqR6Ey4Vyr z{7)_?Roi|-`oX`BW-=}Ww*OAR4lI5jz`ufx=Cb4a%vYHCwF5K{-XLCCu+U<3SO#9; ZF?Q;{i8fYizgJ@)U9KK`76v@i`Uc(MX21Xd literal 0 HcmV?d00001 diff --git a/2018Robot2/bin/com/kauailabs/nav6/IMUProtocol$StreamResponse.class b/2018Robot2/bin/com/kauailabs/nav6/IMUProtocol$StreamResponse.class new file mode 100644 index 0000000000000000000000000000000000000000..bce5abd921ee234e68a250905d1e7ce705777276 GIT binary patch literal 639 zcmb7B%Sr<=6g{cd+B#OP@3(>r6?E`{8^wi!Ak+s|-45wA9Y?2=noO0t@ta%;F8lyL zO1v3^)Q#Zgo|BV%PHvKq&$o8~+gL213o|*)#a+s7qdrNGX-2&!cOuLbJAFcXAU_ zMzNA!>_X_Kj5Reo$8jvwVZ^mI^SNbTHrzYj;$g(A+Ku_cj(dD^b*^M0eHktN_U|$j zDzc?~aTJ=P2RmBVZ}|gvFoaSL3k+-j3Z^JycOxDL?pgI#_zA<@-w{|uhCUG}fL;e# zV)SUprPymRZ?S;BRCnyU-(u0?fW<+J%v^->hRNj;GQ#ZYE7%K>3`VH-q~bG1i96p7 V7{g?`Kb6*LOc0v!GML3U@?W|gk^2Au literal 0 HcmV?d00001 diff --git a/2018Robot2/bin/com/kauailabs/nav6/IMUProtocol$YPRUpdate.class b/2018Robot2/bin/com/kauailabs/nav6/IMUProtocol$YPRUpdate.class new file mode 100644 index 0000000000000000000000000000000000000000..6170c265198894e22d8db47081a038893b2dca87 GIT binary patch literal 470 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 EKe!gPp#T5? literal 0 HcmV?d00001 diff --git a/2018Robot2/bin/com/kauailabs/nav6/frc/IMUAdvanced.class b/2018Robot2/bin/com/kauailabs/nav6/frc/IMUAdvanced.class new file mode 100644 index 0000000000000000000000000000000000000000..fabdf0515e2cca95715200548b83a5c975ebf48f GIT binary patch literal 5854 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 HddmGDZ(JAy literal 0 HcmV?d00001 diff --git a/2018Robot2/bin/com/kauailabs/navx_mxp/AHRSProtocol$AHRSUpdate.class b/2018Robot2/bin/com/kauailabs/navx_mxp/AHRSProtocol$AHRSUpdate.class new file mode 100644 index 0000000000000000000000000000000000000000..f9b4f3037069fd72cbfbeca4dbfe82460f572021 GIT binary patch literal 1026 zcmb7?OK;Oa5XWcJCTT+2^vSb4N&~b7>hidOkf2fpQdAIuUag6`^3)ZswD--(m+i7x^w z5$Z6;Ual6cGw&px)JV6SYr0D6PM8=QhZemu0#?qY9oeC!kBrkS^fFG##p3a}!z9k# z$9Zxuea_H_G=Wh--!ckFHVR0y)JAJ!>8*;w)Jo?vOCzY{*>NY6hR&nU9Npy=jmOEv z89T{U^Sh1(btiS#OXnw<(sPw4|ALmWv3WoX*fsf#>rI;JeipZ-{eW#vnZ>3dqXV=m zf9K@1?<;Csefj!*>totMPr}-pB$0Mk)A}UUcAB)y;1g!3G`3xk;L#wA2WgO>d1s9` zkKNl#v&({tq6o z1_kO-G-<^pq(>r2dK<_gy@GA}VNGp{hO zGOsaL`TTX}4Y)b%dyBcoyv?MMK!fgghg1Pk5Q|&iL42d20C(wG8YaKOJ&J210c^ni UVg14I`4F~^F61s6L93FfGydR9lQEz2W3ZtzO@DZd}KAbjLd7 zhBMPP{R*L2oT=lWONi8*JA;sFnzqpz4f}?xiN3{^Y}3(&)fKKO@lP=#EfLaka4%S? zTGJZs79r8FZNsfu!t)GfoXldN@K=U+h;j!tr!kx(%}B z$g#-G6r&1rL;S}}hcBSgD?-mff0|#Z2B^sJoBL)Vixo!957daOIYuF@VmYX?d8}gz F^aTb3lX(CD literal 0 HcmV?d00001 diff --git a/2018Robot2/bin/com/kauailabs/navx_mxp/AHRSProtocol$AHRS_DATA_TYPE.class b/2018Robot2/bin/com/kauailabs/navx_mxp/AHRSProtocol$AHRS_DATA_TYPE.class new file mode 100644 index 0000000000000000000000000000000000000000..2df2841ff8b7a4a6e31cf46ccd53020017bb70d8 GIT binary patch literal 687 zcma)4%TB^T6g>k~6jAVn?*|bR)WjO&PD3()k0!Mks3feKp*C7At!az#w_F$#7k+>r zWxRtf&=s3IIcM%Y=ia&V`Stz*;0T3rB(a=^f|V53Qdnomn%9PAoLep4(0D~ZWndMC z$!g$7vGC)T@On;?ib1KD{M@Q?U8^*>snrchGlr>3oi}QhRy#FJ&1_3H!7v)%xl!?e zVOzI@uKFN)!u3QaQho9CY;~U>ResTEUWGv%*nxLU1t+fW#$|?5X{d^w7K2g^ZX9Y% zcYVj`bvsUIijGIjj2_s+Yl+a6_?J{1J%a)%2If~PS%2b=6Grha_ s3by-(#7kdqhN4slN|>dX|H;A}76?&(UyTvFNGL&W`94d-U={OV-|iEd*Z=?k literal 0 HcmV?d00001 diff --git a/2018Robot2/bin/com/kauailabs/navx_mxp/AHRSProtocol$AHRS_TUNING_VAR_ID.class b/2018Robot2/bin/com/kauailabs/navx_mxp/AHRSProtocol$AHRS_TUNING_VAR_ID.class new file mode 100644 index 0000000000000000000000000000000000000000..a872a9eb6bd588f2ed76e53b94aa07df734079be GIT binary patch literal 793 zcma))%Wl(95QhIrOheO@rfDgZTU(k+p-7koLP(%Wj^j3#Tqm*}BUaXlvB1T#k?mA{ zEfxrg1rNYOA?5@Y=CX(^jrGl$`R8)Z_a9%s0eFU^Rn+mI2?cu%95nEdur{&Xv7wu% zrZFH;pRlfHX;F%_^hGj{>YNBd`+Ve?BRlYhj^PeR)D4R9k`y>w~Rl}YJ}Z$ z?JO9Wt~YV|nyvp8P$zU;Lkld!H>_aHvhKt&q^v?%Dc{FM_bK7X3bUE|LCi&*h-smw z;_@n(U42xwq2rG8tjxkJdC3W{;xsN#2)*7?8IOE|qGxX-!iE*6kv*SHqudkIggqTA z3q|6KJeK_1smPZ2OcoBjiEY|vfv-7%$!lwwX&U8vB8np7m>0{m(EV44=V-dwJP)JO zSoX159rDSAxD+jHqSL|_4jbqao-eVS|J32@lwxWk(s$};dJ%;sq27}_Ib1>!2mFc@ zzNi)K;u>2*gQ6n@lIHUE_cA`0;1Z s@fXxSE$Z#CmDPbg++w@)D+;%9mx<#SYQ)}qOf}rcorRZ&#Xi@jpUR!C6#xJL literal 0 HcmV?d00001 diff --git a/2018Robot2/bin/com/kauailabs/navx_mxp/AHRSProtocol$BoardID.class b/2018Robot2/bin/com/kauailabs/navx_mxp/AHRSProtocol$BoardID.class new file mode 100644 index 0000000000000000000000000000000000000000..b787466f5fe918c708d55eac33c8162a7b66638f GIT binary patch literal 564 zcmb7BT`vPc6g|_H)mqy6{ubfEN7xr{glI)b8brm5hs|_5bZR@p>~8V1JcvZZ5Ab8~ z3&h>p2amkmGv|Jsb0_!h>-iPHI%adoU_6U7CM--@m}ba?_t%1fl^D7kx2_Rw2K(aH zZ42YJcvG8SRH~TvQkB|dAhn{wDnm9>@+K0ltTUv}W2H^0WVpqUUR*jOkFu_lN4_GJ zIE-2~VNQ9?r_4Y_d)zhGFF& z;tYjY!ST7ebdG9G;e`zIe-OYNoghOe=>|g=MG#sE_9U21Fo)hwoi^+six;N;0GX|u;uwYrb5u)X5<|#- E1JyEqY5)KL literal 0 HcmV?d00001 diff --git a/2018Robot2/bin/com/kauailabs/navx_mxp/AHRSProtocol$DataSetResponse.class b/2018Robot2/bin/com/kauailabs/navx_mxp/AHRSProtocol$DataSetResponse.class new file mode 100644 index 0000000000000000000000000000000000000000..2db84aa4a5ae1e6a5a592a18ed92583113afeaab GIT binary patch literal 487 zcmbVIyH3ME5S+`)#2B1}XN#Z!3S0mc2nm7^ND-g}rH$6k2`)Hyk$sNBXHg+h@B#TK z#5$xvREXks=4MB;tDSzne*iebri&t09IQE57pV5hQqR7Oq=2{(sEjG;sXmj`lFd>k zr%Ee(CQ#hn>k5>brq5o#rL?@whM`OzD2!QYv`j>CmlBo#=VHk|DbDaOc}hpxwoFGx zr|kA_w3bOTrZkmoIBrE|7(7!(DyA?EG>s>{;bat?U$;B=iLoX!@y@T569KnlvLupM zD&L^~(|jPYI#TylYR{D!hwve!1f=4u!RC28T|NQC^O?b&e55p w$aiDiA1SP@DDZv)X{q=yI=sRV<_W1wk!z<^TWy literal 0 HcmV?d00001 diff --git a/2018Robot2/bin/com/kauailabs/navx_mxp/AHRSProtocol$MagCalData.class b/2018Robot2/bin/com/kauailabs/navx_mxp/AHRSProtocol$MagCalData.class new file mode 100644 index 0000000000000000000000000000000000000000..147448a81f598300961256c62b8b2b874f291db3 GIT binary patch literal 572 zcmb7B%TD7!5Ufdpjg1#VcW$Z=49ivvPJ zh#MEafXBZe+GZv82#4vK?y9Mt>3Mv+y$7(41set?E%af^gp=a5iCGhK0tWes(vg7J z5$F%8+3*x~1akG7fR*OGGaZKl`FedIvsOv&K15oM%c%GgwqO14ulS7GPDRX|}_{@)c!5CgK!gc54 WG)6IzX@6$%7seTF=K3(hTI(Hx(}0x# literal 0 HcmV?d00001 diff --git a/2018Robot2/bin/com/kauailabs/navx_mxp/AHRSProtocol$TuningVar.class b/2018Robot2/bin/com/kauailabs/navx_mxp/AHRSProtocol$TuningVar.class new file mode 100644 index 0000000000000000000000000000000000000000..6d2999a9f17c7a7506fed505b1e7806f887b7a73 GIT binary patch literal 469 zcmb7A%Sr=55Uj~-&AOV0@1y8J1)YmGMbJP{2r4Gz8hSTFoVb~heUabtBzW)x{0Kiq z>|I4X>S4ONs=9li-acMl0UTq?MH#CO)*WmJ)F?=_H3H&-Nk-8~j|Hk3g{fk(%i^gv zIyn<4@9hr-Djhp!r_s|!U8gf&MFa9fR@yxqP&lMW=lol&B=@5&ez zbwY|`#g^;^b|xPvB^{C=fo+sHQt;z=Q00zOD-dw7P;kxwF6)cT qB%@%g9y~)laZ`fFwN{AlSmNIM8o)AIh2Jjf3Yv`hnG)8}K>ZUNVr+N- literal 0 HcmV?d00001 diff --git a/2018Robot2/bin/com/kauailabs/navx_mxp/AHRSProtocol.class b/2018Robot2/bin/com/kauailabs/navx_mxp/AHRSProtocol.class new file mode 100644 index 0000000000000000000000000000000000000000..8270448a32aa399968ee8e390c5e701859d16126 GIT binary patch literal 12992 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 literal 0 HcmV?d00001 diff --git a/2018Robot2/bin/org/usfirst/frc/team696/robot/Robot.class b/2018Robot2/bin/org/usfirst/frc/team696/robot/Robot.class new file mode 100644 index 0000000000000000000000000000000000000000..6ed7fb94afea20cfa84fea2174b53b9e7c673022 GIT binary patch literal 4406 zcmbVP`Fj+18UIWYGP}c+rVFt`IZ~jIgqE!>q|ihJ5|FI{(rh@Q)i{|Qk|Db@+u2zX zsM=OrwY8o-)T*_ft+y;>gN@c|wQ9Yp*89G%KfvF7{Jb-p-6h=(Jnr-C`@P=#eZTMf zooE01#FGHF;NKc{!Bvsf&;U1zow!wnr(sdJ$VK3*$ZLqg6^s)ROlp|INfoCWfj@Hp zHoQ*561-k$-=N}l4NGx{EbdhC#wgx|yCS$-!<+FI4R6Ig0`3)7Z&PufpuJtgD!fC$ zJ2kuu?~YRTdoEQfcL9-SVKps;RmAFh7W4^5FU}e4@dB*j2{tR zAC=k11bkd0)+bbaQp47e?lBdQNAW3qTEJ%nd{)5c1bkk=7lh=CDo(2?D7b85&yQK#Bcn75|%4IE!Mk;-rPmWtwni{07V}1}H1)67%jn6Hbdu+${cPMCV?>J1? z_PQx5d1=4xSO@Z%QOg?=QxwGdUDHS(Ht1TeOPfvpxSdmQ)dfO3D9I;o2(mCic?$GH z*_7d1gZ%G1MO}9*Xt1UfwDuo2P8jjD;fygyO)Kl$u0z^OlD=V1>^HK3XkKKpNZC12 zCKYmQnOhDp{%*=P6)dTQKE#PtHY!+}Z>23a8)7U87nM`pw{m`E8R;?8cIYuJ>E=Dt z+G~q{w7|&CqP&hHU=nYsot+COi;e?0sGx1(dwejVV=rD#7xY=jjC|T}+r=DLuytXw zQnHjUe<{m#oWWT}M|iYl7=IPhI*OQ~9<^<#+%OgAbj;$*V)IvY+=N%~UQ$k-%eyOe z!f;G0CFoD;*oOpfXpMlY_^OVl@HGW32Uro>9M^A~biE1N8B_6f9Z%yMD!!@X8GK8} zw{cX*cknC|v9`MNE{TqQ?AP&KA^RSVs`$Q+AIRc|cuvKSbo>}U(J_dmjv+iJfU`pa z4kM}H@`}Dm-=jvm^L9FAc{=*AN5}K{sfwTJ_&I)|JeVg^S8yFf|Pbh zSHqnmXk%@c&fUeNIZlMMwAIC9mY;BPzElRWyQ7XNFCe9Mjb5HQ2!|w#xamvZTSg8Q zD@&OpZP8~+C}=iC5PRZ^`gMv1p0Yf5*qD@f=3MrYwmMqfbdDSHIE+|NQ?{_ zY1c^(9;M99V#LK$C|F+QE9Q63^$uHU*R=hUp-QaC%|>MkySQm6ORN{sd%F~*f?0_38n0bV`ajv#1caF999%@MTJ~G z5Wz4s^Eps)rdnn(R%USvF@?pdPVra~E1$xuX{_dA^)t|9C}NE;4*d~hd;pUltQoYz z!AfMS1gxsEmGNFl&f{fC7f^PR%1%}BswiuhSqzozZ9PxDwgOs`8x+gQZ9$!V2Sn#-`EE zOqxXpvyj-E&f;nkT;mt9ITkPC+Ca~j6meY<*E8FQK^`0VZ!cm?C3s=Z-A8}ij~E`{ zm;Hn2#6!%&hw1r8a4R0IGRG?ib)sxV-Gq9)if}HWB1o4BdxLZbHqK%zjp#aq8)mU> zxPa{i+*m+&0X+r0w16Emc-a|j5}lQ*+q;JMq>Txc;eG?N;|Y#Z2X12+zO-}s{{Y|S Bnj`=K literal 0 HcmV?d00001 diff --git a/2018Robot2/bin/org/usfirst/frc/team696/robot/RobotMap.class b/2018Robot2/bin/org/usfirst/frc/team696/robot/RobotMap.class new file mode 100644 index 0000000000000000000000000000000000000000..f87edad93a9945583c4311a24445285c9095081d GIT binary patch literal 587 zcma)&OH0E*6ot?9l_pJ1e81|WDpFmTjR<0KBNTtG~%!+Nw@10Upja7OskZ&A32ox@oUL@eP)i}DDK6WF0 zFS{{K=GsXp;|Hk~_dmlzI#d&ZMmy1iU^?k5JxPPU4udq3k0+-mflj(f8g!V~^689T z*9_yIK<6%*>M&|4wy*x~9F63&bTNxL7Y-^eTt<~K!|)hBDgyie3l;F$GKl4P5Zrc0 zQJA7mUun~ymxvTXmCZRuDat6N8Kpp@lu4R{;I|RysS8L2Y4PwC;>8><5KCt0W07k2 zdjU&Wrml>Yzsr~A1gQCbhMezZ$on%H3RZ?hJ2dggecre( L)5a>D<*@bz4%=v8 literal 0 HcmV?d00001 diff --git a/2018Robot2/bin/org/usfirst/frc/team696/robot/commands/ExampleCommand.class b/2018Robot2/bin/org/usfirst/frc/team696/robot/commands/ExampleCommand.class new file mode 100644 index 0000000000000000000000000000000000000000..96c4d688ad3a408dd763e1704c2cb724a96309de GIT binary patch literal 930 zcmbVK%T60H6g{2m($pgoxD5^*y%FJ;&Gg_n(_z0A6D)z!V-<@Cc6sl<~yJl8>hh)9+QL z>>fjDv(aKG@8@mFFyB;}{8*%s)JGypXlJpR$0BJ7tsEX~mhGuB3~!scKH-HqR@zv8 ztYdDaNO#`taGgiF<#C>-B5ND|p)1l(BKP}vmmzTCN+jx%Bz)PGabYP7lsTXib1K_C zW1lI?jPhBPS*dl=vF;=|%nKdM1LX|X{w@CMOq`1l)9`&Phj@nPAy%-;@aDg~GQ5!O zf?sqL@4u3=L`7$}Z{veEF>Ksl|C8$oL-otR?qLy`Z^p`$VRu3s&F$4;BZp*a<&2hJ z3#BFf$M$CPezPN9qlI-Ehbfv7P_t+r;8UC-v!78@0CV!+ZEk-m38oSRHsxsy1L1uE;@Z`0}oywa76 gJW{{UKb}5`5it;8z+0gm} z9KZVq{H)*X2+UaR5AcJ3#ed*<&fOIp1Wm_$IQO|X_dL(pbDzEY>mNV81aKRl={So! z8m4u`a5s%JnBg$X;r%q`@B#nvA)}8N-P2IeP}DJqdEQgvu)txFLz%Yd zJdYL=!Is?>n5%gHrrGO;U1|9ZGmut$YI@4_y}B2e-Cn)>WjB!RuBpV=e9LyLe=Sle zqD%r@O;NV2o)Z+jcH464AmTYLDjitv7b;UAnJX66+J18>y(kbiDB7e~y`JBYC7UZh zdxYl16KmTtFosEiiB~fUXFW9V2F@86;V_DG8deQdv1Z^CtQ&a5=rL*n`Th+faILS+ ztpBNj^SEH(GV5RAaFxTGxFB%zXqG11d+j7G50)JV3WF-}Zl$Wa_8((jOhMq@m`2a$h)SZ!nv z@f{=-9#uH0@Ogy?@;_qWIkc0zND)jvN19i5p?@8&Bo3{-z+jDbB$B_tsKq&@T1#+B zbq^1fzM++Gv4HQf zh@Vl$Z@7=&u`FU(!F6I;4BLwvxJff=G#%#zHJ{N4p_oFWgyITaR=WJ}6+%h1c9qZo z<(QZZk4-TX2gE_qya9Bhv8bUieFBxJ;JYG9tPmxULZ{~*9vk1q>jw<{Ne603V?(iA b;*!XLQR#$kQA1cor>5LiPMV@w4DbC3chC-H literal 0 HcmV?d00001 diff --git a/2018Robot2/bin/org/usfirst/frc/team696/robot/subsystems/ExampleSubsystem.class b/2018Robot2/bin/org/usfirst/frc/team696/robot/subsystems/ExampleSubsystem.class new file mode 100644 index 0000000000000000000000000000000000000000..7bb7c0ebe2e1328d319a560ed0f74e6c34a1b436 GIT binary patch literal 456 zcmbVIyG{c!5FF=qa0CKK&{Oe}aDyU6K{NrXh$bk#@6HE~&T-@ikI$k)qTmDgD8$|! zL?|ULc6Y`*yQBU5dj9}$j-41yY(?lr*kyGRe>ztGT=lI+6BH zBn2_MW0Q(vDy%B;583h$$}tSb#@_Sba%G+8xlOs3LiY!KZcSo5cOh{v&P(n1^|R26 zLQZ~}Ax$m~T*+L7!jFvBVxBR?6BBGIZ&bN^Z&h_R6OW>c7TOGhfA3~Elv&_U3&m^a zR23?j@w9fqmo9OD1|6+@4bYL$rr06GDKpCLlQ*!}>N}#?smLDIsP5JcSVv5VVPh#i TtuS$`!u>x&wiI@$y@Abd#GPvi literal 0 HcmV?d00001 diff --git a/ScorpiusCustom/.idea/misc.xml b/ScorpiusCustom/.idea/misc.xml new file mode 100644 index 0000000..639900d --- /dev/null +++ b/ScorpiusCustom/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/ScorpiusCustom/.idea/workspace.xml b/ScorpiusCustom/.idea/workspace.xml new file mode 100644 index 0000000..b476036 --- /dev/null +++ b/ScorpiusCustom/.idea/workspace.xml @@ -0,0 +1,277 @@ + + + + + + + + + + + + + + + + + + + + + + + true + DEFINITION_ORDER + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +