#pragma config(Hubs, S1, HTMotor, HTMotor, HTServo, none)
#pragma config(Hubs, S2, HTMotor, HTMotor, none, none)
#pragma config(Sensor, S1, , sensorI2CMuxController)
#pragma config(Sensor, S2, , sensorI2CMuxController)
#pragma config(Sensor, S3, IRSeeker2, sensorHiTechnicIRSeeker1200)
#pragma config(Motor, mtr_S1_C1_1, motor_flag, tmotorTetrix, PIDControl, encoder)
#pragma config(Motor, mtr_S1_C1_2, motor_lin2, tmotorTetrix, PIDControl, encoder)
#pragma config(Motor, mtr_S1_C2_1, motor_left1, tmotorTetrix, PIDControl, encoder)
#pragma config(Motor, mtr_S1_C2_2, motor_left2, tmotorTetrix, PIDControl, encoder)
#pragma config(Motor, mtr_S2_C1_1, motor_right1, tmotorTetrix, PIDControl, encoder)
#pragma config(Motor, mtr_S2_C1_2, motor_right2, tmotorTetrix, PIDControl, encoder)
#pragma config(Motor, mtr_S2_C2_1, notused, tmotorTetrix, PIDControl, encoder)
#pragma config(Motor, mtr_S2_C2_2, motor_lin4, tmotorTetrix, PIDControl, encoder)
#pragma config(Servo, srvo_S1_C3_1, servo1, tServoStandard)
#pragma config(Servo, srvo_S1_C3_2, servo2, tServoStandard)
#pragma config(Servo, srvo_S1_C3_3, servo3, tServoContinuousRotation)
#pragma config(Servo, srvo_S1_C3_4, servo4, tServoNone)
#pragma config(Servo, srvo_S1_C3_5, servo5, tServoNone)
#pragma config(Servo, srvo_S1_C3_6, servo6, tServoNone)
//*!!Code automatically generated by 'ROBOTC' configuration wizard !!*//
#include "JoystickDriver.c";
/**
* Helper function to scale analog joystick values for tetrix dc motors.
*/
void initializeRobot() //don't touch
{//absolutely nothing
//Set all motor rotation counts to 0
nMotorEncoder(motor_lin2) =0;//E
nMotorEncoder(motor_lin4) =0;//G
}
int scaleForMotor(int joyValue)
{
const int DEADZONE = 5;
const int MAX_MOTOR_VAL = 154; //don't touch
const float MAX_JOY_VAL = 127;
//check for deadzone
if(abs(joyValue) < DEADZONE) {
return 0;
}
//calculate scaled value
int direction = joyValue / abs(joyValue); // 1 or -1
float ratio = ((joyValue * joyValue) / (MAX_JOY_VAL * MAX_JOY_VAL));
int scaledVal = (ratio * MAX_MOTOR_VAL) * direction; //don't touch
return scaledVal;
}
task main()
{
initializeRobot();
waitForStart(); //wait for field control system to start
while(true)
{
int Dm = nMotorEncoder(motor_left1); //Save the current rotation values to integers Dm, Em, Fm, and Gm for future
int Em = nMotorEncoder(motor_left2);
int Fm = nMotorEncoder(motor_right1);
int Gm = nMotorEncoder(motor_right2);
//Display rotation values of the motors on the 1st, 2nd, 3rd, and 4th lines of the NXT display.
nxtDisplayTextLine(2, "%d", nMotorEncoder(motor_lin2));
nxtDisplayTextLine(4, "%d", nMotorEncoder(motor_lin4));
getJoystickSettings(joystick); //receive inputs from controllers
motor[motor_left1] = scaleForMotor(joystick.joy1_y1/-127*150);
motor[motor_left2] = scaleForMotor(joystick.joy1_y1/-127*150);
motor[motor_right1] = scaleForMotor(joystick.joy1_y2/127*150);
motor[motor_right2] = scaleForMotor(joystick.joy1_y2/127*150); //tank controls
if (joy2Btn(4) == 1) //controller2_Y_slide_up
{
motor(motor_lin2) = -60;
motor(motor_lin4) = 60;
nxtDisplayTextLine(1, "slide down"); //print to NXT display
}
else if (joy1Btn(8) == 1) //controller1_lefttrigger_sweeper_in
{
motor(motorA) = -60;
motor(motorB) = -60;
nxtDisplayTextLine(1, "sweeper in");
}
else if (joy1Btn(1) == 1) //controller1_Y_armdown
{
//servo(servo3) = 1;
nxtDisplayTextLine(1, "sweeper in");
}
else if (joy2Btn(2) == 1) //controller2_A_slide_down
{
if (nMotorEncoder(motor_lin4) > -8300) //made up number for now
{
motor(motor_lin2) = 60;
motor(motor_lin4) = -60;
nxtDisplayTextLine(1, "slide up");
}
}
else if (joy1Btn(7) == 1) //controller1_lefttrigger_Y_sweeperout
{
motor(motorA) = 60;
motor(motorB) = 60;
nxtDisplayTextLine(1, "sweeper out");
}
else if (joy1Btn(2) == 1) //controller1_A_bucket_down
{
int count = 1;
while(count == 1)
{
servo(servo1) = 120;
servo(servo2) = 136;
nxtDisplayTextLine(1, "bucket down");
if (joy1Btn(2) == 1)
{
count++;
}
}
}
else if (joy1Btn(3) == 1) //controller1_B_bucket_up
{
int count = 1;
while(count == 1)
{
servo(servo1) = 86;
servo(servo2) = 170;
nxtDisplayTextLine(1, "bucket down");
if (joy1Btn(3) == 1)
{
count++;
}
}
}
else if (joy1Btn(4) == 1) //controller1_Y_armmid
{
int count = 1;
while(count == 1)
{
servo(servo1) = 46;
servo(servo2) = 210;
nxtDisplayTextLine(1, "bucket down");
if (joy1Btn(4) == 1)
{
count++;
}
}
}
else if (joy2Btn(1) == 1)
{
motor(motor_flag) = 60;
}
else
{
if (joy2Btn(3) == 1)
{
motor(motor_flag) = -60;
}
else //absolutely nothing
{
//servo(servo1) = 255;
//servo(servo2) = 1;
motor(motorA) = 0; //Every motor stopped, servos back to its position
motor(motorB) = 0;
motor(motor_lin2) = 0;
motor(motor_lin4) = 0;
motor(motor_flag) = 0;
nxtDisplayTextLine(1, "slide stop");
nxtDisplayTextLine(1, "Nothing, bucket up");
}
}
}
}