void terminalCheck2()
{
	if (flag == 0)
	{
		if (dir == 0)
			if (ot == 0 || ot == 1)
				forward_mm(30);
			else back_mm(30);
		else if (ot == 0 || ot == 1)
			back_mm(30);
		else forward_mm(30);
		flag = 1;
	}

	if (((ct == 0 || ct == 1) && dir == 0) || ((ct == 2 || ct == 3) && dir == 2))
	{
		left_degrees(30);
		velocity(turn_v, turn_v);
		while (ADC_Conversion(1)<70)
		left();
		//	_delay_ms(100);
		stop();
	}
	else if (((ct == 0 || ct == 1) && dir == 2) || ((ct == 2 || ct == 3) && dir == 0))
		{
			right_degrees(30);
			velocity(turn_v, turn_v);
			while (ADC_Conversion(1)<70)
				right();
			//	_delay_ms(100);
			stop();	
		}
	else {
		left_degrees(150);
		velocity(turn_v, turn_v);
		while (ADC_Conversion(1)<70)
		left();
		//	_delay_ms(100);
		stop();
		
			}
	//printf("Enter term[%d][%d]\n", ct, 1);
	//scanf("%d", &term[ct][1]);
	term[ct][1] = scan();
	if(term[ct][1]==-1)
		lcd_print(2,11,9, 1);
	else
		lcd_print(2,11, term[ct][1], 1);
	_delay_ms(1000);
	if (term[ct][1] == -1 || term[ct][1] == color[ct])
		total--;
	visited[ct] = 1;
	visitedCount++;
}
Example #2
0
void turnLeft()	//turns the robo left
{
	velocity(turn_v,turn_v);

	forward_mm(85);
	right_degrees(90);
	
	//..printf("Turn Left\n");
}
Example #3
0
void turnRight()	//turns the robo right
{
	velocity(turn_v,turn_v);
	
	forward_mm(85);
	right_degrees(90);
	dir = (dir + 1) % 4;
	//..printf("Turn Right \n");
}
Example #4
0
int main() {

	init_devices();
	while(1){
		forward_mm(50);
		back_mm(50);
		left_degrees(90);
		right_degrees(90);
	}

 return 0;
}
Example #5
0
void turnLeft(void)
{
 forward_mm(30);
  left();
 _delay_ms(350);
 in_sens_val();

 while(((bit_is_clear(PINA, 1)) && (bit_is_clear(PIND, 6))))
 {
  in_sens_val();
    left();
 }
  PORTB = 0x06;
}
Example #6
0
void turnRight1()
{
  forward_mm(70);
  right();
 _delay_ms(350);
 in_sens_val();

 while(((bit_is_clear(PINA, 1)) && (bit_is_clear(PIND, 6))))
 {
  in_sens_val();
    right();
 }
PORTB = 0x06;	
}
Example #7
0
int main()
{
    //Turn off the IR proximity sensors and the IR sharp sensor.
    DDRH |= (1 << 2) | (1 << 3);
    PORTH |= (1 << 2) | (1 << 3);

    //Turn off the white line sensors.
    DDRG |= (1 << 2);
    PORTG |= (1 << 2);

    set_motors();

    while(1)
    {
        velocity(forwardLeftSpeed, forwardRightSpeed);
        forward_mm(1000);

        stop();
        _delay_ms(3000);

        velocity(backLeftSpeed, backRightSpeed);
        back_mm(1000);

        stop();
        _delay_ms(3000);

        velocity(leftLeftSpeed, leftRightSpeed);
        left_degrees(90);

        stop();
        _delay_ms(3000);

        velocity(rightLeftSpeed, rightRightSpeed);
        right_degrees(90);

        stop();
        _delay_ms(3000);

        right_degrees(90);

        stop();
        _delay_ms(3000);

        velocity(leftLeftSpeed, leftRightSpeed);
        left_degrees(90);

        stop();
        _delay_ms(3000);
    }
}
	void turnRight()
	{
	forward_mm(50);
	stop();
	right();
	_delay_ms(200);
	read_sensor();
	 while(Right_white_line <0x40 )
	 {
	 read_sensor();
	 right();
	 }
	 stop();
	_delay_ms(200);
	read_sensor();
	forward();
	}
int main(void)
{
	init_devices();

	while(1)
	{
		forward_mm(100); //Moves robot forward 100mm
		stop();
		_delay_ms(500);			
		
		back_mm(100);   //Moves robot backward 100mm
		stop();			
		_delay_ms(500);
		
		left_degrees(90); //Rotate robot left by 90 degrees
		stop();
		_delay_ms(500);
		
		right_degrees(90); //Rotate robot right by 90 degrees
		stop();
		_delay_ms(500);
		
		soft_left_degrees(90); //Rotate (soft turn) by 90 degrees
		stop();
		_delay_ms(500);
		
		soft_right_degrees(90);	//Rotate (soft turn) by 90 degrees
		stop();
		_delay_ms(500);

		soft_left_2_degrees(90); //Rotate (soft turn) by 90 degrees
		stop();
		_delay_ms(500);
		
		soft_right_2_degrees(90);	//Rotate (soft turn) by 90 degrees
		stop();
		_delay_ms(500);
	}
}
void terminalCheck1()
{
	forward_mm(30);
	flag = 1;
	if (ct != ot)
	{
		if (dir == 1 || dir == 3)
		{
			if (ot == 3 || ot == 0)
				turnRight();
			else turnLeft();
		}
		if (((ct == 0 || ct == 1) && dir == 2) || ((ct == 2 || ct == 3) && dir == 0))
			turn();
		front();
		ot = ct;
	}
	right_degrees(50);
	velocity(turn_v, turn_v);
	while (ADC_Conversion(1)<70)
		right();
	//	_delay_ms(100);
	stop();
	term[ct][0] = scan();
	if(term[ct][0]==-1)
		lcd_print(2,11,9, 1);
	else
		lcd_print(2,11, term[ct][0], 1);
	_delay_ms(1000);
	//printf("Enter term[%d][%d]\n", ct, 0);
	//scanf("%d", &term[ct][0]);



	lcd((char*)term[ct][0]);
	if (term[ct][0] == -1 || term[ct][0] == color[ct])
		total--;
}
//Main Function
int main()
{ 
   init_devices();
   while(1)
   {
     if(receive_data=='<')
     {
       lcd_cursor(1,1);
       lcd_string("Drawing Completed");
       lcd_cursor(2,1);
       lcd_string("NEX ROBOTICS IND");
     }
     if(receive_data=='[')
	 {
	    S2=0x78;
		_delay_ms(1000);
	 }

	 if(receive_data==']')
	 {
	    S2=0x7F;
		_delay_ms(1000);
	 }

     if(receive_data == 'r'||receive_data == 'g'||receive_data == 'b')      
     {
        //uart0_clr();
        color=receive_data;
		receive_data='0';
        //continue;
     }  	 
     if(receive_data == 'w'||receive_data == 'a'||receive_data == 'd'||receive_data == 's')      
     {
        //uart0_clr();
        flag=receive_data;
		receive_data='0';
        //continue;
     }
	 if(receive_data == 't'||receive_data == 'h')
	 {
	     digit=receive_data;
         receive_data='0';
	 }	 
	 if(color=='r'&&flag=='w'&&digit=='h')
	 {
	     if(receive_data=='1')
		 {
		    forward_mm(100);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='2')
		 {
		    forward_mm(200);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='3')
		 {
		    //S2=0x78; // 90 degree
            //_delay_ms(1000);
		    forward_mm(300);
			//_delay_ms(1000);
			//S2=0x7F; // 180 degree
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='4')
		 {
		    forward_mm(400);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='5')
		 {
		    forward_mm(500);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='6')
		 {
		    forward_mm(600);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='7')
		 {
		    forward_mm(700);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='8')
		 {
		    forward_mm(800);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='9')
		 {
		    forward_mm(900);
			receive_data='0';
			//UDR='x';
		 }

	 }
	 if(color=='r'&&flag=='w'&&digit=='t')
	 {
	     if(receive_data=='1')
		 {
		    forward_mm(11);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='2')
		 {
		    forward_mm(20);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='3')
		 {
		    forward_mm(30);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='4')
		 {
		    forward_mm(40);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='5')
		 {
		    forward_mm(50);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='6')
		 {
		    forward_mm(60);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='7')
		 {
		    forward_mm(70);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='8')
		 {
		    forward_mm(80);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='9')
		 {
		    forward_mm(90);
			receive_data='0';
			//UDR='x';
		 }

	 }
     if(color=='r'&&flag=='s'&&digit=='h')
	 {
	     if(receive_data=='1')
		 {
		    back_mm(170);
			receive_data='0';
			//UDR='x';
		 }
     }
     if(color=='r'&&flag=='a'&&digit=='t')
	 {
	     if(receive_data=='1')
		 {
		    left_degrees(10);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='2')
		 {
		    left_degrees(20);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='3')
		 {
		    left_degrees(30);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='4')
		 {
		    left_degrees(40);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='5')
		 {
		    left_degrees(50);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='6')
		 {
		    left_degrees(60);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='7')
		 {
		    left_degrees(70);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='8')
		 {
		    left_degrees(80);
			receive_data='0';
			//UDR='x';
		 }
         if(receive_data=='9')
		 {
		    left_degrees(90);
			receive_data='0';
			//UDR='x';
		 }
	 }
	 if(color=='r'&&flag=='a'&&digit=='h')
	 {
	     if(receive_data=='1')
		 {
		    left_degrees(100);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='2')
		 {
		    left_degrees(200);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='3')
		 {
		    left_degrees(300);
			receive_data='0';
			//UDR='x';
		 }
	 }
	 if(color=='r'&&flag=='d'&&digit=='t')
	 {
	     if(receive_data=='1')
		 {
		    right_degrees(10);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='2')
		 {
		    right_degrees(20);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='3')
		 {
		    right_degrees(30);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='4')
		 {
		    right_degrees(40);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='5')
		 {
		    right_degrees(50);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='6')
		 {
		    right_degrees(60);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='7')
		 {
		    right_degrees(70);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='8')
		 {
		    right_degrees(80);
			receive_data='0';
			//UDR='x';
		 }
         if(receive_data=='9')
		 {
		    right_degrees(90);
			receive_data='0';
			//UDR='x';
		 }
	 }
	 if(color=='r'&&flag=='d'&&digit=='h')
	 {
	     if(receive_data=='1')
		 {
		    right_degrees(100);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='2')
		 {
		    right_degrees(200);
			receive_data='0';
			//UDR='x';
		 }
		 if(receive_data=='3')
		 {
		    right_degrees(300);
			receive_data='0';
			//UDR='x';
		 }
	 }
   }     
}
Example #12
0
int main(void)
{
  port_init();
  init_devices();
  
int k=240;
 int i=0;
 while(i<3)
   {
     
     servo_1(180);//for opening the gripper
     _delay_ms(200);
	 
     backward_mm_ext(290);//for releasing the thread as gripper goes down
     stop();
     _delay_ms(300);
    	

     servo_1(100);//for closing the gripper
     _delay_ms(300);

     forward_mm_ext(225);//for winding the thread so that gripper comes up
     _delay_ms(200);
	  
     servo_1_free();//making servo free to rotate
     _delay_ms(300);

     velocity(170,200);
     back_mm(k);
     stop();
     _delay_ms(300);
	     
     velocity(190,240);
     right_degrees(100);
     _delay_ms(200);
     stop();
	    
     velocity(145,200);
     forward_mm(400);//for moving robot in x direction
     stop();
     _delay_ms(300);

     backward_mm_ext(225);
     _delay_ms(600);
     _delay_ms(1200);
     

     servo_1(180);
     _delay_ms(300);

     forward_mm_ext(290);
     stop();
     _delay_ms(100);
  
     velocity(170,200);
     back_mm(400);
     _delay_ms(300);
     stop();

     velocity(190,240);
     left_degrees(90);
     stop();
     _delay_ms(60);

     velocity(190,240);
     forward_mm(k);//for moving robot in y direction
     stop();
     _delay_ms(300);
      
          k=k-120;
	  i=i+1;//for 3 iteration
      }
	 	  
	    stop();
     
    }
int main(void)
{
	data = UDR0; 				//making copy of data from UDR0 in 'data' variable 

	UDR0 = data; 				//echo data back to PC
        
        init_devices();

	velocity (246, 250); //Set robot velocity here. Smaller the value lesser will be the velocity
						 //Try different valuse between 0 to 255

        while(1)
         {

		if(data == 0x38) //ASCII value of 8
		{
			forward_mm(90); //Moves robot forward 100mm
			stop();
			_delay_ms(700);
		}

		if(data == 0x32) //ASCII value of 2
		{
			back_mm(90);   //Moves robot backward 100mm
			stop();
			_delay_ms(700);
		}

		if(data == 0x34) //ASCII value of 4
		{
			left_degrees(90); //Rotate robot left by 90 degrees
			stop();
			_delay_ms(700);
		}

		if(data == 0x36) //ASCII value of 6
		{
			right_degrees(90); //Rotate robot right by 90 degrees
			stop();
			_delay_ms(700);
		}
		if(data == 0x67) //ASCII value of g
		{
			soft_left_degrees(90); //Rotate robot left by 90 degrees
			stop();
			_delay_ms(500);
		}
		if(data == 0x68) //ASCII value of h
		{
			soft_right_degrees(90); //Rotate robot right by 90 degrees
			stop();
			_delay_ms(500);
		}
		if(data == 0x69) //ASCII value of i
		{
			left_degrees(180); //Rotate robot left by 90 degrees
			stop();
			_delay_ms(500);
		}

		if(data == 0x70) //ASCII value of j
		{
			right_degrees(180); //Rotate robot right by 90 degrees
			stop();
			_delay_ms(500);
		}        
		if(data == 0x35) //ASCII value of 5
		{
			stop();						
		        _delay_ms(500);//stop
		}

		if(data == 0x37) //ASCII value of 7
		{
			buzzer_on();
		}

		if(data == 0x39) //ASCII value of 9
		{
			buzzer_off();
		}
                if(data == 0x61) //ASCII value of a
                {
                        redled_on();
                }
                if(data == 0x62) //ASCII value of b
                {
                        redled_off();
                }
                if(data == 0x63) //ASCII value of c
                {
                        blueled_on();
                }
                if(data == 0x64) //ASCII value of d
                {
                        blueled_off();
                }
                if(data == 0x65) //ASCII value of e
                {
                        greenled_on();
                }
                if(data == 0x66) //ASCII value of f
                {
                        greenled_off();
                }

}

}
int main(void)
{
	
	cli();
    set_lcd();
    set_motors();
    set_ADC();
    sei();
	
	int getValue1(void);                      //This function returns the value of the sensor mounted on the arm 
	void findagte(void);     
	void entergate(void);
	int follow_wall(void);
	int getValue2(void) ;                              
	
	int row;
	int state;
	
	
	
   centre = ADC_Conversion(2);
   sensorLeft = ADC_Conversion(3);
   sensorRight = ADC_Conversion(1);
	 
   value_front = ADC_Conversion(11); 
   value_4sens= ADC_Conversion(12);
   value_2sens= ADC_Conversion(10);
   value_1sens=ADC_Conversion(9);
/*
    lcd_print(2, 1, sensorLeft, 3);
    lcd_print(2, 5, centre, 3);
    lcd_print(2, 9, sensorRight, 3);
*/

    if(sensorLeft <50 && sensorRight <50 && centre < 50)                 //when the bot enters the arena first
	{
		
		velocity(forwardLeftSpeed, forwardRightSpeed);
        forward_mm(350);
		stop();
        _delay_ms(100);
		
		
	}
	
	   
        //getValue2();
		 value_front = ADC_Conversion(11);
		 if(value_front>150)
		 {
			 
			 centre = ADC_Conversion(2);
			  while(centre<150)
			  {
				  
				   velocity(forwardLeftSpeed, forwardRightSpeed);
			       forward();
				   value_front = ADC_Conversion(11);
				   if(value_front<150)
				   {
					   findgate();
				   }
				 
			        centre = ADC_Conversion(2);
			  }
			
			 entergate(); 
		 }
		 
		 
		 else if(value_front < 50)
		 {
			 
			 left_degrees(90);
			 stop();
			 _delay_ms(500);
			 
			  //turn the gripper
			  servo_2(90);
			 
			 while(1)
			 {
				 
				 row=follow_wall();
				 
				 if(state)
				 {
					 soft_right();
					 
					 centre = ADC_Conversion(2);
					 while(centre<150)
					 {
						 
						velocity(forwardLeftSpeed, forwardRightSpeed);
			            forward();
				   if(value_front<150)
				   {
					   findgate();
				   }
				   
				   centre = ADC_Conversion(2);
					 }
					 entergate();
					 						 
				 }			       
				 
			 }
			 
			 	
	}		
		
			return(row); 
		 }	     
/*******MOVEMENT
void nodeLeft()
{
	node();
	unsigned int a=0;
	left();
	_delay_ms(1100);
	stop();
	//...buzzer_on();
	_delay_ms(1000);
	//...buzzer_off();
	
}
void nodeRight()
{
	node();
	unsigned int a=0;
	right();
	_delay_ms(1100);
	stop();
	//...buzzer_on();
	_delay_ms(1000);
	//...buzzer_off();
}

void Uturn()
{
	velocity(turn_v,turn_v);
	left_degrees(180);
}
void backward()	//TODO
{
	backJaa();
	cost++;
	//..printf("Back\n");
}



********END MOVEMENT**********

*************************************************
******************BLACK*LINE***********************
**************************************************/
void node()
{
	forward_mm(60);
}