#pragma config(Hubs, S1, HTMotor, HTMotor, HTServo, none) #pragma config(Hubs, S2, HTMotor, HTMotor, none, none) #pragma config(Sensor, S3, IRSeeker2, sensorHiTechnicIRSeeker1200) #pragma config(Motor, mtr_S1_C1_1, motor_lin1, 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, motor_lin3, 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, tServoNone) #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 "hitechnic-irseeker-v2.h" //required driver for ir sensor #include "JoystickDriver.c" //required driver for joystick void initializeRobot() //place for sensor resets and pre-game preparation. { nMotorEncoder(motor_left1) =0;//D //Set all motor rotation counts to 0 nMotorEncoder(motor_right1) =0;//E nMotorEncoder(motor_left2) =0;//F nMotorEncoder(motor_right2) =0;//G nMotorEncoder(motor_lin1) =0; return; } task main() //main instruction for the robot starts { initializeRobot(); //Prepares robot, communicates with Field control system. waitForStart(); // Wait for the beginning of autonomous phase. while(true) // Repeat the below code for ever until specified otherwise. { int sen1 = SensorValue[IRSeeker2]; //Obtain ir seeker sensor value each time loop is run. nxtDisplayTextLine(3, "%d", SensorValue[IRSeeker2]); //Display on the third line of the NXT brick display the ir seeker value. //Value ranges from 1 to 9: 1 being left and 9 being right. if(sen1 != 9) //If the ir sensor does not receive an ir signal from the 9th sector, which is the right side, run the following code. { motor(motor_left1)= -60; //move forward motor(motor_left2)= 60; motor(motor_right1)= -60; motor(motor_right2)= 60; nxtDisplayTextLine(1, "%d", nMotorEncoder(motor_left1)); //Display rotation values of the motors on the 1st, 2nd, 3rd, and 4th lines of the NXT display. nxtDisplayTextLine(2, "%d", nMotorEncoder(motor_left2)); nxtDisplayTextLine(3, "%d", nMotorEncoder(motor_right1)); nxtDisplayTextLine(4, "%d", nMotorEncoder(motor_right2)); } else { if(sen1 == 9) //If the ir sensor receives a signal from the 9th sector, run the following code. { 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); nxtDisplayTextLine(5, "%d", Dm); //Display the rotations taken to reach the ir beacon. motor(motor_left1)= -60; // goes past bucket a little motor(motor_left2)= 60; motor(motor_right1)= -60; motor(motor_right2)= 60; wait1Msec(400); motor(motor_left1)= 0; // stops motor(motor_left2)= 0; motor(motor_right1)= 0; motor(motor_right2)= 0; wait1Msec(300); motor(motor_left1)= -60; // turn towards boxes motor(motor_left2)= -60; motor(motor_right1)= -60; motor(motor_right2)= -60; wait1Msec(700); motor(motor_left1)= 0; // stops motor(motor_left2)= 0; motor(motor_right1)= 0; motor(motor_right2)= 0; wait1Msec(300); //change linear slide raise to here //raise it, then dump while(nMotorEncoder(motor_lin1 < x) // x = # rotations it takes to raise the slide) { motor(motor_lin1)= 60; //move linear slide up motor(motor_lin2)= 60; motor(motor_lin3)= -60; motor(motor_lin4)= -60; } // need dump //lower slide a tad motor(motor_left1)= 60; // turn away from boxes motor(motor_left2)= 60; motor(motor_right1)= 60; motor(motor_right2)= 60; wait1Msec(700); motor(motor_left1)= 0; // stop motor(motor_left2)= 0; motor(motor_right1)= 0; motor(motor_right2)= 0; wait1Msec(300); int DDm = nMotorEncoder(motor_left1); int newdm = Dm; while(nMotorEncoder(motor_left1) < newdm) //Run code until rotation values reach Dm. (Go back the same distance that it took to come to the beacon(?)) { motor(motor_left1)= 60; //goes forward motor(motor_left2)= -60; motor(motor_right1)= 60; motor(motor_right2)= -60; } motor(motor_left1)= 0; //wait motor(motor_left2)= 0; motor(motor_right1)= 0; motor(motor_right2)= 0; wait1Msec(300); motor(motor_left1)= 60; //turn motor(motor_left2)= 60; motor(motor_right1)= 60; motor(motor_right2)= 60; wait1Msec(340); motor(motor_left1)= 60; //back motor(motor_left2)= -60; motor(motor_right1)= 60; motor(motor_right2)= -60; wait1Msec(1400); motor(motor_left1)= 60; //turn motor(motor_left2)= 60; motor(motor_right1)= 60; motor(motor_right2)= 60; wait1Msec(340); motor(motor_left1)= 60; //back motor(motor_left2)= -60; motor(motor_right1)= 60; motor(motor_right2)= -60; wait1Msec(900); motor(motor_left1)= 0; //wait motor(motor_left2)= 0; motor(motor_right1)= 0; motor(motor_right2)= 0; wait1Msec(350); motor(motor_left1)= 60; //turn motor(motor_left2)= 60; motor(motor_right1)= 60; motor(motor_right2)= 60; wait1Msec(640); motor(motor_left1)= 0; //wait motor(motor_left2)= 0; motor(motor_right1)= 0; motor(motor_right2)= 0; wait1Msec(300); motor(motor_left1)= 60; // bridge motor(motor_left2)= -60; motor(motor_right2)= 60; motor(motor_right2)= -60; wait1Msec(2000); //end break; } } } }