Пример #1
0
int main(void)
{
	systemInit();
	
	while(1)
		{
			moveOnDirection(-228, 90, NULL);
			_delay_ms(500);
			rotate(78,60,NULL);
			_delay_ms(1000);
			moveOnDirection(-700, 40, releaseCarpets);
			rotate(-78, 40, NULL);
			moveOnDirection(-40, 65, NULL);
		

			_delay_ms(5000);
			while (1);
			
		}
}
/*************************************************************************************************************************************************************************************
																				ZELENA STRANA
*************************************************************************************************************************************************************************************/
void greenSide(void)
{
	position startingPosition;
	unsigned char currentPosition = 0, nextPosition = 0, odometryStatus;
	unsigned char activeState = TACTIC_ONE;
	
	startingPosition.x = 0;
	startingPosition.y = 0;
	startingPosition.angle = 0;
	setPosition(startingPosition);
	
	while (1)
	{
		switch(activeState)
		{
			case TACTIC_ONE:
			for (currentPosition = nextPosition; currentPosition < TACTIC_ONE_POSITION_COUNT; currentPosition++)
			{
				// mozda ubaciti if-else sa akcijama tipa regularno- kretanje, i alternativno- sta god
				odometryStatus = moveOnDirection(greenSideTacticOnePositions[currentPosition].distance, greenSideTacticOnePositions[currentPosition].speed, greenSideTacticOnePositions[currentPosition].detectionCallback);
				
				if(odometryStatus == ODOMETRY_FAIL)
				{

				}
				else if(odometryStatus == ODOMETRY_STUCK)
				{
					
				}
				if(currentPosition == 0)
				{
					_delay_ms(1000);
					rotate(-83,50,NULL);//rotira se za stepenice
					_delay_ms(1000);
				}
				else if(currentPosition == 1)
				{
					//rotacija
					
					_delay_ms(500);
					servo_position(250);
					while(1);
				}			
			}//end for				
			break;
		}
	}//end while(1)
	
	
}
Пример #3
0
/*************************************************************************************************************************************************************************************
																				ZUTA STRANA
*************************************************************************************************************************************************************************************/
void yellowSide(void)
{
	position startingPosition;
	unsigned char currentPosition = 0, nextPosition = 0, odometryStatus;
	unsigned char activeState = TACTIC_ONE;
	
	startingPosition.x = 0;
	startingPosition.y = 0;
	startingPosition.angle = 0;
	setPosition(startingPosition);
	
	while (1)
	{
		switch(activeState)
		{
			case 5:
				moveOnDirection(-8000, 60, detectEnemyYellow);
				while(1);				
			case COLLISION:
			if(currentPosition == 1)
				while(1);
				//if(currentPosition == 0)
				//{
					while(detectEnemyYellow(0) == 1)
					{
						PORTG = 0xFF;
						_delay_ms(100);
					}
					PORTG = 0;
					activeState = 5;
					nextPosition = currentPosition;
				//}
				break;
			case TACTIC_ONE:
			for (currentPosition = nextPosition; currentPosition < TACTIC_ONE_POSITION_COUNT; currentPosition++)
			{
				// mozda ubaciti if-else sa akcijama tipa regularno- kretanje, i alternativno- sta god
				
				odometryStatus = moveOnDirection(yellowSideTacticOnePositions[currentPosition].distance, yellowSideTacticOnePositions[currentPosition].speed, yellowSideTacticOnePositions[currentPosition].detectionCallback);
				
				if(odometryStatus == ODOMETRY_FAIL)
				{
					activeState = COLLISION;
					nextPosition = currentPosition;
					break;
				}
				else if(odometryStatus == ODOMETRY_STUCK)
				{
					
				}
				
				if(currentPosition == 0)
				{
					_delay_ms(1000);
					rotate(78,50,NULL);//rotira se za stepenice 76
					_delay_ms(1000);
				}
				else if(currentPosition == 1)
				{
					//servo_position(250);
					while(1);
				}
			}//end for
			break;
		}
	}//end while(1)
	
}