コード例 #1
0
void checkarm(void)
{
	while(1)
	{
		arm_up();
		_delay_ms(2000);
		arm_down();
		_delay_ms(2000);
	}
}
コード例 #2
0
void run(void)
{
    data='w';
    while(1)
    {
        while(data == 'w') //waiting for signal
        {
        }
        while(data == '\0' )
        {
            stop();
            _delay_ms(4000);
            comintersection();
            _delay_ms(100);
        }
        if(data=='f') // forward
        {
            data='\0';
        }
        if(data=='r') // right
        {
            data='\0';
            turn_right();
        }
        if(data=='l') // left
        {
            data='\0';
            turn_left();
        }
        if(data == 'h') // halt
        {
            data='\0';
            stop();
            _delay_ms(100);
            continue;

        }
        if(data == 'o') // origin
        {
            data='w';
            stop();
            _delay_ms(100);
            continue;
        }
        if(data == 'c') //collect item data -> i when the bot is trying to pick up an rfid
        {
            data='w';
            arm_down();
            _delay_ms(4200);
            stop_arm();
            _delay_ms(2000);
            grab();
            arm_up();
            _delay_ms(4750);
            stop_arm();
            _delay_ms(2000);
            lcd_cursor(2,1);
            lcd_string("Collecting");
            _delay_ms(3500);
            readrfidtag();
            clearrfid();
            continue;

        }
        if(data == 'd') //drop_item
        {
            data='w';
            go_down();
            release();
            go_up();
            lcd_cursor(2,1);
            lcd_string("Dropping");
            _delay_ms(3500);
            senddroppedsig();
            continue;
        }

        while(1)
        {
            if(move_bot() == 1)
            {
                continue;
            }
            else
            {
                break;
            }
        }
    }
}
コード例 #3
0
int main() {
	light_start(0);
	shut_down_in(119.5);
	arm_up();
	claw_open();
	bin_down();
	enable_servos();
	
	collect_poms();
	printf("Collected Initial Poms in base\n");
	
	/*
	forward(70);
	msleep(500);
	left(35, 0);
	msleep(300);
	//face 1st pile
	forward(45);
	pomPileOne();
	*/
	forward(50);
	msleep(500);
	left(28, 0);
	//face 1st pile
	forward(59);	//needs to be exact or else claw will hit table divider
	msleep(500);
	pomPileOne();
	
	/*
	//4/9/16 Test Code
	forward(20);
	msleep(500);
	left(15, 0);
	msleep(300);
	//face 1st pile
	forward(80);
	pomPileOne();
	*/
	
	//go to pile 2
	multforward(45, 0.50);
	msleep(100);
	forward(15);
	msleep(300);
	left(85, ks/2);
	msleep(300);
	backward(2);
	//forward(2);
	pomPileTwo();
	
	
	/*
	if(green == 1 && red == 1) {
		printf("Collected all\n");
		//go to bin
		right(60, ks/2);
		forward(100);
		right(100, ks/2);
		msleep(500);
		bin_mid();
		msleep(500);
		bin_dump();
	}
	else {
		//do pom pile three only if robot does not have both one red and one green
		pomPileThree();
		//go to bin
		left(60, ks/2);
		forward(60);
	}
	*/
	backward(5);
	right(80, ks/2);
	msleep(300);
	forward(130);
	msleep(300);
	right(50, ks/2);	//turn against the wall
	msleep(300);
	backward(5);
	msleep(500);
	/*
	arm_mid();
	msleep(300);
	bin_mid();
	msleep(500);
	bin_dump();
	msleep(1000);
	*/
	right(40, ks/2);
	msleep(500);
	backward(15);
	
	servo(MAIN_ARM, 1200);	//move away arm from box
	msleep(300);
	bin_mid();
	msleep(500);
	bin_dump();
	msleep(1000);
	bin_mid();
	msleep(500);
	bin_dump();
	msleep(1000);
	
	/*
	int i = 0;
	for(i = 0; i < 3; i++) {
		forward(2);
		msleep(300);
		backward(2);
		msleep(300);
	}
	*/
	
	msleep(1000);
	right(30, ks/2);
	forward(90);
	
	msleep(2000);
	disable_servos();
	ao();
	return 0;
}
コード例 #4
0
int main() {
	//light_start(0);
	shut_down_in(119.5);
	arm_up();
	claw_open();
	bin_down();
	enable_servos();
	
	collect_poms();
	printf("Collected Initial Poms in base\n");
	
	/*
	forward(70);
	msleep(500);
	left(35, 0);
	msleep(300);
	//face 1st pile
	forward(45);
	pomPileOne();
	*/
	forward(47);
	msleep(500);
	left(30, 0);
	//face 1st pile
	forward(60);	//needs to be exact or else claw will hit table divider
	pomPileOne();
	
	/*
	//4/9/16 Test Code
	forward(20);
	msleep(500);
	left(15, 0);
	msleep(300);
	//face 1st pile
	forward(80);
	pomPileOne();
	*/
	
	//go to pile 2
	multforward(45, 0.50);
	msleep(100);
	forward(15);
	msleep(300);
	left(85, ks/2);
	msleep(300);
	forward(10);
	pomPileTwo();
	
	if(green == 1 && red == 1) {
		printf("Collected all\n");
		//go to bin
		right(60, ks/2);
		forward(100);
		right(100, ks/2);
		msleep(500);
		bin_mid();
		msleep(500);
		bin_dump();
	}
	else {
		//do pom pile three only if robot does not have both one red and one green
		pomPileThree();
		//go to bin
		left(60, ks/2);
		forward(60);
	}
	
	msleep(2000);
	disable_servos();
	ao();
	return 0;
}