2
0
mirror of https://github.com/team2059/Zaphod synced 2024-12-18 20:12:28 -05:00

Moved the joystick to lib/controller and changed the existing code to work with it

This commit is contained in:
Adam Long 2014-12-28 16:15:51 +00:00
parent 4b104d4910
commit aaeae5fd11
7 changed files with 73 additions and 97 deletions

View File

@ -2,7 +2,6 @@
#define __HH_BASE_H__
#include <WPILib.h>
#include "HHRobot.h"
#include "Subsystems/Controller.h"
#include "Subsystems/Shooter.h"
#include "Subsystems/Collector.h"
#include "Subsystems/Compressor.h"

View File

@ -3,7 +3,8 @@
#include "HHBase.h"
HHRobot::HHRobot():
drive(new WCDrive(6,1,1,1,2,1,3,2,1,2,2,2,3)),
controlSystem(new JoystickController()),
driveStick(new Extreme3dPro(1)),
shootStick(new Extreme3dPro(2)),
shooter(new HHShooter()),
collector(new HHCollector()),
compressorSystem(new HHCompressor()),
@ -27,8 +28,8 @@ void HHRobot::Init(){
compressorSystem->StartCompressor();
}
bool HHRobot::CheckJoystickValues(){
float x=controlSystem->GetJoystickAxis(1,"x");
float y=controlSystem->GetJoystickAxis(1,"y");
float x=driveStick->GetJoystickAxis("x");
float y=driveStick->GetJoystickAxis("y");
if((-.1<x && x<.1) && (-.1<y && y<.1)) {
dashboard->PutBoolValue("Joysticks Valid",true);
return true;
@ -38,7 +39,7 @@ bool HHRobot::CheckJoystickValues(){
}
}
void HHRobot::UpdateDashboard(){
dashboard->PutFloatValue("Shooting Power",controlSystem->GetThrottle());
dashboard->PutFloatValue("Shooting Power",shootStick->GetThrottle());
}
void HHRobot::RunAuto(){
timer->Reset();
@ -74,6 +75,8 @@ void HHRobot::Handler(){
bool allowCompressing = true;
//Periodic tasks that should be run by every loop
shooter->UpdateShooterPosition(targetAngle);
driveStick->handler();
shootStick->handler();
if(timer->Get()-lastTime>=0.5f){
// Update compressor when current time-last time is more than .5 seconds
lastTime=timer->Get();
@ -81,39 +84,39 @@ void HHRobot::Handler(){
}
collector->UpdateCollector(shooter->isShooting,shooter->GetAngle());
//TODO Fix whatever the heck is wrong with this
drive->Update(6,controlSystem->GetJoystickAxis(1,"z")+controlSystem->GetJoystickAxis(1,"x"),controlSystem->GetJoystickAxis(1,"y"));
drive->Update(6,driveStick->GetJoystickAxis("z")+driveStick->GetJoystickAxis("x"),driveStick->GetJoystickAxis("y"));
UpdateDashboard();
//Shooting button
if(controlSystem->GetJoystickButton(2,SHOOTER_FIRE)){
shooter->StartShootingSequence(controlSystem->GetThrottle());
if(shootStick->ButtonValue[1]){
shooter->StartShootingSequence(shootStick->GetThrottle());
}
//Collector button assignments
if(controlSystem->GetJoystickButton(1,COLLECTOR_INTAKE)) {
if(driveStick->GetJoystickButton(COLLECTOR_INTAKE)) {
collector->CollectBall();
collectorTable->PutNumber("Current Collector Speed",1);
}else if(controlSystem->GetJoystickButton(1,COLLECTOR_OUTTAKE)) {
}else if(driveStick->GetJoystickButton(COLLECTOR_OUTTAKE)) {
collectorTable->PutNumber("Current Collector Speed",-1);
collector->ReleaseBall();
}else{
collectorTable->PutNumber("Current Collector Speed",0);
collector->CollectorStop();
}
if(controlSystem->GetJoystickButton(1,COLLECTOR_EXTEND)){
if(driveStick->GetJoystickButton(COLLECTOR_EXTEND)){
compressorSystem->ExtendCollector();
}
if(controlSystem->GetJoystickButton(1,COLLECTOR_RETRACT)){
if(driveStick->GetJoystickButton(COLLECTOR_RETRACT)){
compressorSystem->RetractCollector();
}
if(controlSystem->GetJoystickButton(2,SHOOTER_ANGLE_ONE)){
if(shootStick->GetJoystickButton(SHOOTER_ANGLE_ONE)){
targetAngle=100;
}
if(controlSystem->GetJoystickButton(2,SHOOTER_ANGLE_TWO)){
if(driveStick->GetJoystickButton(SHOOTER_ANGLE_TWO)){
targetAngle=120;
}
if(controlSystem->GetJoystickButton(2,SHOOTER_ANGLE_THREE)){
if(shootStick->GetJoystickButton(SHOOTER_ANGLE_THREE)){
targetAngle=90;
}
if(controlSystem->GetJoystickButton(2,SHOOTER_ANGLE_FOUR)){
if(shootStick->GetJoystickButton(SHOOTER_ANGLE_FOUR)){
targetAngle=130;
}
shooterTable->PutNumber("Target Shooter Angle",targetAngle);
@ -132,7 +135,7 @@ void HHRobot::Handler(){
// Shooting stuff
shooterTable->PutNumber("Current Shooter Angle",shooter->GetAngle());
shooterTable->PutNumber("Current Shooter State",shooter->e_ShooterState);
shooterTable->PutNumber("Current Shooter Power",controlSystem->GetThrottle()*100);
shooterTable->PutNumber("Current Shooter Power (raw)",controlSystem->GetThrottle() * 127.0f + 128);
shooterTable->PutNumber("Current Shooter Power",shootStick->GetThrottle()*100);
shooterTable->PutNumber("Current Shooter Power (raw)",shootStick->GetThrottle() * 127.0f + 128);
}
// vim: ts=2:sw=2:et

View File

@ -3,8 +3,8 @@
#include <WPILib.h>
#include "HHBase.h"
#include "lib/drive/WCDrive.h"
#include "lib/controller/Controller.h"
#include "Definitions.h"
class JoystickController;
class HHShooter;
class HHCollector;
class HHCompressor;
@ -13,9 +13,8 @@ class HHRobot;
class HHSonar;
class HHRobot{
private:
Joystick *rightStick, *leftStick;
WCDrive *drive;
JoystickController *controlSystem;
Extreme3dPro *driveStick, *shootStick;
NetworkTable *driveTable, *shooterTable, *collectorTable;
HHShooter *shooter;
HHCollector *collector;

View File

@ -1,62 +0,0 @@
#include "Controller.h"
JoystickController::JoystickController(){
driveJoystick=new Joystick(JOYSTICK_RIGHT);
shootJoystick=new Joystick(JOYSTICK_LEFT);
}
float JoystickController::GetThrottle(){
return (-GetRawJoystickAxis(2,4)+1)/2;
}
int JoystickController::GetJoystickButton(int joystick, int button){
switch (joystick){
case 1:
return driveJoystick->GetRawButton(button);
break;
case 2:
return shootJoystick->GetRawButton(button);
break;
default:
printf("Button from joystick %d does not exist!\n", joystick);
return -1;
break;
}
}
float JoystickController::GetRawJoystickAxis(int joystick, int axis){
switch (joystick){
case 1:
return driveJoystick->GetRawAxis(axis);
break;
case 2:
return shootJoystick->GetRawAxis(axis);
break;
default:
printf("Axis from joystick %d does not exist!\n", joystick);
return 999;
break;
}
}
float JoystickController::GetJoystickAxis(int joystick, std::string axis){
if (joystick == 1) {
if (axis == "x"){
return driveJoystick->GetX();
}else if (axis == "y"){
return driveJoystick->GetY();
}else if (axis == "z"){
return driveJoystick->GetZ();
}else if(axis == "throttle"){
return driveJoystick->GetRawAxis(4);
}
}else if(joystick == 2){
if (axis == "x"){
return shootJoystick->GetX();
}else if (axis == "y"){
return shootJoystick->GetY();
}else if (axis == "z"){
return shootJoystick->GetZ();
}else if(axis == "throttle"){
return shootJoystick->GetRawAxis(4);
}
}
return 0;
}
// vim: ts=2:sw=2:et

View File

@ -1,14 +0,0 @@
#include <WPILib.h>
#include "../Definitions.h"
class JoystickController
{
private:
Joystick *driveJoystick, *shootJoystick;
public:
JoystickController();
float GetThrottle();
int GetJoystickButton(int,int);
float GetRawJoystickAxis(int,int);
float GetJoystickAxis(int, std::string axis);
};
// vim: ts=2:sw=2:et

View File

@ -0,0 +1,19 @@
#include <WPILib.h>
#include "../Definitions.h"
// Logitech Extreme 3D Pro joysticks
class Extreme3dPro
{
private:
Joystick *stickofjoy;
public:
//Array to hold joystick button values
int ButtonValue[11];
//Call periodically to update joystick values
void handler();
Extreme3dPro(uint8_t);
float GetThrottle();
int GetJoystickButton(uint8_t);
float GetRawJoystickAxis(uint8_t);
float GetJoystickAxis(std::string axis);
};
// vim: ts=2:sw=2:et

View File

@ -0,0 +1,32 @@
#include "Controller.h"
Extreme3dPro::Extreme3dPro(uint8_t port){
stickofjoy = new Joystick(port);
}
float Extreme3dPro::GetThrottle(){
return (-GetRawJoystickAxis(4)+1)/2;
}
int Extreme3dPro::GetJoystickButton(uint8_t button){
return stickofjoy->GetRawButton(button);
}
float Extreme3dPro::GetRawJoystickAxis(uint8_t axis){
return stickofjoy->GetRawAxis(axis);
}
float Extreme3dPro::GetJoystickAxis(std::string axis){
if (axis == "x"){
return stickofjoy->GetX();
}else if (axis == "y"){
return stickofjoy->GetY();
}else if (axis == "z"){
return stickofjoy->GetZ();
}else if(axis == "throttle"){
return stickofjoy->GetRawAxis(4);
}else{
return 0;
}
}
void Extreme3dPro::handler(){
for(int i=0;i<=11;i++){
ButtonValue[i] = stickofjoy->GetRawButton(i);
}
}
// vim: ts=2:sw=2:et