示例#1
0
void ArmClass::HandleTarget(float centerX,float centerY,float calX,float calY)
{
	if(fabs (centerX) >= 1 || fabs(centerY) >= 1)
	{
		LastMoveByDegreesX = LastMoveByDegreesY = 360.0f;
		if (CurrentEnableTracking)
		{
			SetTurret(GetTurretEncoder());
			SetArm(GetLifterEncoder());
		}
		return;
	}
	else
	{
		float moveByX_Degrees = 0;
		float moveByY_Degrees = 0;

		float moveByX_Ticks = 0;
		float moveByY_Ticks = 0;

		float xFOV = 76.00f;
		float yFOV = 61.2f;

		float ticksPerDegreeX = 1280/90.0f;
		float ticksPerDegreeY = 5000/90.0f;

		moveByX_Degrees = (calX - centerX) * (xFOV*.5f);
		moveByY_Degrees = (calY - centerY) * (yFOV*.5f);

		LastMoveByDegreesX = moveByX_Degrees;
		LastMoveByDegreesY = moveByY_Degrees;

		moveByX_Ticks = moveByX_Degrees * ticksPerDegreeX;
		moveByY_Ticks = moveByY_Degrees * ticksPerDegreeY;

		if(GetLifterEncoder() >= 0)
		{
			moveByX_Ticks *=-1.0f;
			moveByY_Ticks *=-1.0f;
		}

		if (CurrentEnableTracking)
		{
			SetTurret(GetTurretEncoder()-(moveByX_Ticks* 1.0f)); //.85
			SetArm(GetLifterEncoder()-(moveByY_Ticks* 1.0f));
		}
	}
}
示例#2
0
void ArmClass::Auto_Start()
{
	CurrentEnableTracking = false;
	PreviousEnableTracking = false;

	LastMoveByDegreesX = 360.0f;
	LastMoveByDegreesY = 360.0f;

	ResetEncoderLifter();
	ResetEncoderTurret();

	ArmPIDController->Disable();
	ArmPIDController->Reset();
	TurretPIDController->Disable();
	TurretPIDController->Reset();
	SetTurret(GetTurretEncoder());
	SetArm(GetLifterEncoder());

	isShooting = false;
	ShotStage = 0;
	ShotTimer->Reset();

	ArmLockonTimer->Reset();
	ArmLockonTimer->Start();

	LastShotTimer->Reset();
	LastShotTimer->Start();
}
示例#3
0
void ArmResetStateMachine() {
//    switch(armResetState) {
 //       case STOP_PID:
            StopIntegratedMotorEncoderPID(armR);
            StopIntegratedMotorEncoderPID(armL);
//            armResetState = LOWER_ARM;
//            break;
//        case LOWER_ARM:
            while(GetDigitalInput(armResetSwitch)
                && GetJoystickDigital (1, 7, 2)){
                SetArm(-75);
            }
            WaitInMsec(150);
//            armResetState = START_PID;
//            break;
//        case START_PID:
            PresetIntegratedMotorEncoder(armR, 0);
            PresetIntegratedMotorEncoder(armL, 0);
            StartIntegratedMotorEncoderPID(armR, 0); 
            StartIntegratedMotorEncoderPID(armL, 0);
            SetArmState(GROUND);
//            armResetState = DONE;
//            break;
//        case DONE:
//            break;
//    }
}
void ResetArmEncoders() {       //asdfadsf
    SetArm(-75);
    while(GetDigitalInput(armResetSwitch)){
    }
    PresetIntegratedMotorEncoder(armR, 0);
    PresetIntegratedMotorEncoder(armL, 0);
}
示例#5
0
int main()
{
	set_each_analog_state(0,0,0,1,0,0,0,0);
	WhichSide();
	SetArm();
	Start();
	Cubes();	
}
HRESULT CMixParam::ToggleArm()
{
	bool bArm;

	HRESULT hr = GetArm(&bArm);

	if (FAILED(hr))
		return hr;

	return SetArm(!bArm);
}
示例#7
0
void ArmClass::GoToArm()
{
	SetArm(Preset_Arm_Intake);
}
示例#8
0
void ArmClass::GotoShooting()
{
	SetArm(Preset_Arm_Far_Shot);
}
示例#9
0
void ArmClass::GotoTowerShot()
{
	SetArm(Preset_Arm_Tower_Shot);
}
示例#10
0
void ArmClass::ResetArm()
{
	SetArm(Preset_Arm_Floor);
}