Recent Changes - Search:

TEAMS Academy Wiki

Explore TEAMS!
for visiting sophomores & juniors

Robotics

EnvBioTech

Bat Design

Assistive Tech


Students


Instructors

TEAMS Forum

TEAMS Calendar

TEAMS Web Site

Wiki Info

edit Student.SideBar

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

  1. include "create.h"
  2. define safe (!cr8->cliff_frontleft && !cr8->cliff_frontright && !cr8->cliff_left && !cr8->cliff_right && !cr8->wheeldrop_left && !cr8->wheeldrop_right && !cr8->wheeldrop_caster)
  3. define unsafe (cr8->cliff_frontleft || cr8->cliff_frontright || cr8->cliff_left || cr8->cliff_right || cr8->wheeldrop_left || cr8->wheeldrop_right || cr8->wheeldrop_caster)

// 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

  • /
Edit - History - Print - Recent Changes - Search
Page last modified on January 29, 2009, at 12:52 AM