コード例 #1
0
int main()
{
    pin_config_init();
    timing_interrupt_config();
    //ir_finder_analog_setup();
    //analog_ultrasonic_setup();
    
    //analog_ultrasonic_setup();
    //ultrasonic_setup();
    //config_pwm_14();
    
   // ANSA = 1;
    //ANSB = 1;   //Digital buffer is active
    
    //_TRISA0 = 1;
    //_TRISB2 = 1;
    //_TRISA2 = 1;
    //_TRISA0 = 1;
    //_TRISA1 = 1;
    
    float angle = find_normal_angle();
    STATE = 0;
    
    while(1)
    {        
        
//        switch(findCenterState)
//				{
//					case 0:
//						if(find_normal())   //First normal found
//						{
//							findCenterState = 1;
//						}
//						else    //Keep looking
//						{
//							//do nothing
//						}
//						break;
//					case 1:
//						if(find_24())   //First 24" found
//						{
//							findCenterState = 2;
//						}
//						else    //Keep looking
//						{
//							//do nothing
//						}
//						break;
//					case 2:
//						if(turn_degrees(90))    //Turned 90 degrees
//						{
//							findCenterState = 3;
//						}
//						else
//						{
//							//do nothing
//						}
//						break;
//					case 3:
//						if(find_24())   //Second 24" found
//						{
//							findCenterState = 0;
//							//STATE = findLoader;
//                            
//                            delay(10000);
//						}
//						else
//						{
//							//do nothing
//						}
//						break;
//				}
        
        
        switch(STATE)
       {
            case 0:
                if(turn_degrees(angle))//if(find_normal_analog())
                {
                    STATE = 1;
                }
                break;
            case 1:
               delay(5000);
               STATE = 2;
               break;
            case 2:
               if(find_inches(24.0))
               {
                   delay(5000);
                    STATE = 3;
               }
               break;
            case 3:
               if(turn_degrees(90))
               {
                   delay(5000);
                    STATE = 4;
               }
               break;
            case 4:
               if(find_inches(24.0))
               {
                   delay(5000);
                    STATE = 5;
               }
               break;
            case 5:
               //do nothing...
               break;
       }
    }
}
コード例 #2
0
ファイル: Gangenheten.cpp プロジェクト: samli177/S.M.A.U.G
int main(void)
{
	LED_INIT;
	//servoTx;
	sei();
	USART_init();
	MPU_init();
	SERVO_init();
	init_counters();
	
	initvar();
	
	SERVO_update_EEPROM(BROADCASTING_ID);
	
	wait(10);
	move_to_std();
	wait_until_gyro_stable();
	LED0_ON;
	USART_send_message("Gyro Stable");
	
	// ------ TESTCODE FOR READING SERVO -------
	
	//servoGoto(1, 3.14/3, 0x200);
	SERVO_update_EEPROM(BROADCASTING_ID); // NOTE: needs to run once for SERVO_get position to work	
	//----------------------------
	
	reset_counter_1();
	set_counter_1(3000);
	
	uint8_t readyCounter = 0;
	
    while(1)
    {
		MPU_update();
		
		if(USART_get_turn_flag())
		{
			turn_degrees(USART_get_turn_angle(), USART_get_turn_dir());
		}
		if(USART_get_climb_flag())
		{
			climb();
		}
		
		uint8_t r = USART_getRotation();
		uint8_t s = USART_getSpeed();
		uint8_t d = USART_getDirection();
		if(s != 0 || r != 50)
		{
			std_pos_flag = 0;
			reset_counter_1();
			readyCounter = 3;
		}
		
		move_robot(d, r, s);
		
		
		if(r == 50 && s == 0 && d == 0 && readyCounter)
		{
			cli();
			USART_send_ready();
			sei();
			readyCounter--;
		}
		
		
		
		if(move_to_std_flag == 1)
		{
			move_to_std_flag = 0;
			move_to_std();
		}
		
		
		/*climb();
		for(int i = 0; i < 10; ++i)
		{
			move_robot(0,50,100);
			//wait(2000);
		}
		*/
		/*
		
		change_z(-120);
		move_to_std();
		turn_degrees(180,1);
		
		
		// Takes a predecided number of steps forward
		// This is good when testing different things.
		wait(100);
		for(int i = 0; i < 10; ++i)
		{
			move_robot(0,50,100);
			//wait(2000);
		}
		*/
		
	USART_decode_rx_fifo();

	}
}