All pastes #349746 Raw Edit

Untitled

public text v1 · immutable
·published 2007-02-11 00:58 UTC
rendered paste body
//Team Mr. Roboto (Matthew Gyurgyik, Ryan Odon, Sean Cahill, Tim Ziemba, Red Chopps, Dan Virost)
//Code V2.0.1
//Copyrighted 2007
//For use in the Feb. 20, 2007 Case Westren Robotics Competion

#define MOTORL OUT_A
#define MOTORR OUT_C
#define SENSEL SENSOR_3
#define SENSER SENSOR_1

#define SCORE_VALUE 340
int value;
int CurrValue;
int PrevValue;

task main() {
     SetSensor(SENSOR_1, SENSOR_LIGHT);                       //Define Type of
     SetSensor(SENSOR_3, SENSOR_LIGHT);                       //Sensors for Left and Right

     SetSensorMode(SENSOR_1, SENSOR_MODE_RAW);                //Set Sensorsto read
     SetSensorMode(SENSOR_3, SENSOR_MODE_RAW);                //to read RAW VALUES

     ClearMessage();                                          //This is going to clear the Message (so we can recieve 102)
     while(Message()!=102);                                 //goes into an empty loop until message 102 get sent

     SetPower(MOTORL + MOTORR, 7);
     OnRev(MOTORL + MOTORR);
     Wait(200);
     start lightSense;         //Senses for the light
     ClearTimer(3);
     start bumperSense;        //Checks for bumper hits
}


//THE VALUE DIMMEST STORES THE BRIGHTEST LIGHT VALUE BY THE END OF THIS TASK
task lightSense() {
     int dimmest = 1023;     //The lowest the light should ever go
     start onmot;  //Well, does the obvious
     ClearTimer(0);
     while(Timer(0) <= 10) {                  //this will spin the robot around for 1 second
                    if(SENSER < dimmest){     //If the sensor value is lower than what is set in dimmest
                              dimmest = SENSER;    //then dimmest will get the new brightest value
                    }     //basically the bot turns around for a total of 1 sec (about 2-3 spins) storing the brigtest value it finds in dimmest
     }
     PlaySound(SOUND_DOUBLE_BEEP);     //this lets us know when the bot has completed the fist loop

     SetPower(MOTORL+MOTORR, 6);      //Spin the bot
     OnFwd(MOTORL);
     OnRev(MOTORR);

     ClearTimer(2);
     while(SENSER > dimmest + 50) {    //While the Sensor reading is greater than the value for the brightest light + 50 to the brightest light restart
                  if(Timer(2) > 15) {
                              start restart;
                  }
     }
     Toggle(MOTORL + MOTORR); //reverse the motors
     SetPower(MOTORL + MOTORR, 7);  //change speed of the motor to 5
     Wait(18);       //wait .18 seconds
     Off(MOTORL + MOTORR); //turn off the motors
     value = dimmest;      //set dimmest to value
     start track;          //lets start tracking the light
}

task onmot() {
     SetPower(MOTORL + MOTORR, 7); //set the power of the motors
     Fwd(MOTORL);                 //set Motor Left to go FWD
     Rev(MOTORR);                 //set Motor Right to go in Reverse
     OnFor(MOTORL+MOTORR, 100);   //have the motors go for 1 second
}

task track() {
while(true){
        if ((abs(SENSEL - SENSER) < 10)  ) {
                SetPower(MOTORL, 7);
                SetPower(MOTORR, 7);
                OnFwd(MOTORL+MOTORR);
                //start findGreatLight;
                while(true) {
                        if (SENSER > SENSEL) {

                                SetPower(MOTORL, 6);
                                SetPower(MOTORR, 1);
                                OnFwd(MOTORL+MOTORR);
                                Wait(50);
                                Off(MOTORL+MOTORR);
                                     continue; }
                           else if(SENSEL > SENSER) {
                                     SetPower(MOTORR, 1);
                                     SetPower(MOTORL, 6);
                                     OnFwd(MOTORL+MOTORR);
                                     Wait(50);
                                     Off(MOTORR + MOTORL);
                                     continue; }
                           else {
                                SetPower(MOTORR + MOTORL, 7);
                                Wait(100);
                                Off(MOTORL+MOTORR);
                                Wait(100);
                                continue;
                           }
                        }
                       /* if ( (SENSEL < 540) || (SENSEL > 610) ) //if the bot is really close to the light then
                        {
                                Off(MOTORL+MOTORR); //turn bot off
                                PlaySound(SOUND_UP); //play a nice sound
                                Wait(300); //wait for the score
                                PlaySound(SOUND_UP); //play a nice sound
                                SetPower(MOTORL + MOTORR, 7);
                                OnRev(MOTORL + MOTORR);
                                Wait(100);
                                start restart;
                        } */
                }
        }
        PlaySound(SOUND_UP);
        Wait(300);
        PlaySound(SOUND_DOWN);
        Wait(300);
}


task findGreatLight() {
CurrValue = SENSER;
 PrevValue = CurrValue;
     while(true) {
     PlayTone(700, 50);
                   CurrValue = SENSER;
                // if (CurrValue > PrevValue) {
                if (PrevValue > CurrValue) {
                    stop track;
                    SetPower(MOTORL+MOTORR, 7);
                    OnFwd(MOTORL+MOTORR);
                    Wait(100);
                    Off(MOTORL+MOTORR);
                    Off(MOTORL+MOTORR); //turn bot off
                    PlaySound(SOUND_UP); //play a nice sound
                    Wait(300); //wait for the score
                    PlaySound(SOUND_UP); //play a nice sound
                    SetPower(MOTORL + MOTORR, 7);
                    OnRev(MOTORL + MOTORR);
                    Wait(150);
                    start restart;
                    }
                    PrevValue = CurrValue;
                 }
}

task bumperSense() {
     while(true) {
                 if(SENSEL < 200 ||  SENSER < 200 || Timer(3) > 300) {   //If theres a bumper hit, or the timer runs out
                           ClearTimer(3);
                           stop track;
                           Off(MOTORL + MOTORR);
                           OnRev(MOTORL + MOTORR);
                           SetPower(MOTORL, 7);
                           SetPower(MOTORR, 7);
                           Wait(100);
                           Off(MOTORL + MOTORR);
                           start restart;
                 }
     }
}

task restart() {
     stop findGreatLight;
     stop lightSense;
     start lightSense;
}