|
Explore TEAMS!
|
Student /
JoshEggHuntMainC- Joshua Maldonado - Cohort 2 - Egg Hunt - Jan. 22, 2009 - This code will allow Hasian Ekuation to successfully seek and capture the ball.
// Include the Command Module API
// Pointer to the Sensor Data structure cr8_t *cr8; int time = 0; int stop = 3600; uint16_t last_value = 0; int dy_dx = 0; uint16_t sensor = 0; uint8_t servo_position = 127; // Declare any new function prototypes here: // For example: int dashboard(int counter, char partnumber); // Declare GLOBAL constants used in program: // Declare GLOBAL Variables used in program: // Initialize GLOBAL Variables used in program: // Declaraion for function "main" int main(void) { // Allocate memory for sensor data structure
cr8 = cr8_alloc();
/* Initialize the Create and Command Module
Sync communications settings. */
cr8_init(cr8);
// Declare LOCAL constants used in function main:
// For example: const int Pi100 = 314;
// Declare LOCAL Variables used in function main:
// For example: int i, j;
// Initialize LOCAL Variables used in function main:
// For example: i = 1;
/*
write code for main here!
*/
time = cr8_stopwatch_time();
cr8_adc_enable(ADC_CENTER_1); // enable right light sensor
cr8_adc_enable(ADC_CENTER_2); // enable left light sensor
cr8_adc_enable(ADC_LEFT_1);
lcd_set_backlight(255);
cr8_update(cr8);
cr8_stopwatch_start();
last_value = cr8->adc_center1;
while(cr8_stopwatch_time()<stop && (safe)) { while((safe) && (cr8_stopwatch_time()<stop) && (cr8->button_play==0)) // wait for play button to be press
{
cr8_set_leds(1,0,0,255);
cr8_delay(15);
cr8_set_leds(0,0,0,255);
cr8_update(cr8);
sensor=(12000/((cr8->adc_left1)+30)+((cr8->adc_left1)/15)-40);
if((time+5 <=cr8_stopwatch_time()))// LCD display = distance and angle
{
cr8_update(cr8);
lcd_print_4vars((sensor),(cr8->adc_center2),(((cr8->dist_m)*1000)+(cr8->dist_mm)),((cr8->angle)+((cr8->revolutions)*360)),true,false);
time = cr8_stopwatch_time();
}
}
while(cr8->button_play==1 && (safe) && (cr8_stopwatch_time()<stop))// wait for play button to be press
{
cr8_update(cr8);
while(cr8->button_play==0 && (safe) && (!cr8->bumper_left || !cr8->bumper_right)&& (cr8_stopwatch_time()<stop))//keep spinnig until the robot found a light source
{
cr8_update(cr8);
cr8->angle=0;
cr8->dist_mm = 0;
cr8->dist_m = 0;
cr8_update(cr8);
if((time+5 <=cr8_stopwatch_time()))// LCD display = distance and angle
{
cr8_update(cr8);
lcd_print_4vars((sensor),(dy_dx >100),(((cr8->dist_m)*1000)+(cr8->dist_mm)),((cr8->angle)+((cr8->revolutions)*360)),true,false);
time = cr8_stopwatch_time();
}
while((cr8->dist_m*1000 + cr8->dist_mm < 600) && (safe))
{
cr8_drive_direct(150,150);
cr8_update(cr8);
if((time+5 <=cr8_stopwatch_time()))// LCD display = distance and angle
{
cr8_update(cr8);
lcd_print_4vars((sensor),(dy_dx >100),(((cr8->dist_m)*1000)+(cr8->dist_mm)),((cr8->angle)+((cr8->revolutions)*360)),true,false);
time = cr8_stopwatch_time();
}
if((cr8->dist_m*1000 + cr8->dist_mm > 300) && (safe))
{
cr8_drive_direct(50,-50);
cr8_update(cr8);
if((time+5 <=cr8_stopwatch_time()))// LCD display = distance and angle
{
cr8_update(cr8);
lcd_print_4vars((sensor),(dy_dx >100),(((cr8->dist_m)*1000)+(cr8->dist_mm)),((cr8->angle)+((cr8->revolutions)*360)),true,false);
time = cr8_stopwatch_time();
}
if(sensor <= 18)
{
cr8_drive_direct(0,0);
cr8_cricket_servo_set(1,0);
cr8_delay(1000);
cr8_cricket_servo_set(1,255);
cr8_delay(1000);
cr8_update(cr8);
}
if(sensor <= 15)
{
cr8_cricket_servo_set(1,0);
}
cr8_update(cr8);
}
/*if(cr8->button_play && (servo_position > 0)) servo_position--;
else if(cr8->button_advance && (servo_position < 255)) servo_position++;
*/
cr8_update(cr8);
}
while((cr8->dist_m*1000 + cr8->dist_mm > 600) && (safe))
{
cr8_update(cr8);
last_value = cr8->adc_center1;
cr8_delay(80);
cr8_update(cr8);
dy_dx = cr8->adc_center1-last_value;
if((time+5 <=cr8_stopwatch_time()))// LCD display = distance and angle
{
cr8_update(cr8);
lcd_print_4vars((sensor),(dy_dx >100),(((cr8->dist_m)*1000)+(cr8->dist_mm)),((cr8->angle)+((cr8->revolutions)*360)),true,false);
time = cr8_stopwatch_time();
}
/*if((sensor <= 30) && (safe) && (cr8->adc_center1>400))
{*/
cr8_drive_direct(-250,-250);
cr8_update(cr8);
if(sensor <= 18)
{
cr8_drive_direct(0,0);
cr8_cricket_servo_set(1,0);
cr8_delay(1000);
cr8_cricket_servo_set(1,255);
cr8_delay(1000);
cr8_update(cr8);
}
if(sensor <= 15)
{
cr8_cricket_servo_set(1,0);
}
if((time+5 <=cr8_stopwatch_time()))// LCD display = distance and angle
{
cr8_update(cr8);
lcd_print_4vars((sensor),(dy_dx >100),(((cr8->dist_m)*1000)+(cr8->dist_mm)),((cr8->angle)+((cr8->revolutions)*360)),true,false);
time = cr8_stopwatch_time();
}
}
}
} } while(unsafe && (cr8_stopwatch_time()<stop)) // if unsafe blink, and beep error {
cr8_drive(0,0);
cr8_set_leds(0,0,0,0);
cr8_delay(80);
cr8_set_leds(0,0,255,255);
cr8_beep_error();
cr8_update(cr8);
}
cr8_free(cr8);
return(0);
} // End of function main /* Declare other functions you create here... For example, to define function xxxxx of type integer (int) with two input parameters, sample_num and code... int xxxxx(int sample_num, char code) { // Declare LOCAL constants used in function xxxxx: // Declare LOCAL Variables used in function xxxxx: // Initialize LOCAL Variables ised in function xxxxx: // Write code for function XXXXX here: //Return int value for function xxxxx: return(1); You must always return a value to sending program --in this case a 1 to indicate fn done with no problems. } // End of function xxxxx
|