⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 function_2009.c~

📁 An algorithm I2C communication as a master in AVR MCU using WINCC
💻 C~
📖 第 1 页 / 共 2 页
字号:
                            
                             if (curve_position==0x01)
                                 if(i>=10) 
                                    {
                                        if((ls2)|(ls1)) break; 
                                    }
                        }   
                
                     break;
         case 0x02:  
                    Vleft=220;
                    Vright=320;
                    for(i=1;i<=temp;i++)
                        {
                            begin_get_encoder();
                            while(enc <100)
                                {
                                  enc =(abs(left_data) + abs(right_data))>>1;
                                }; 
                             LED=(enc*i)/10;    
                             enc =0;
                            
                             if (curve_position==0x01)
                                 if(i>=10) 
                                    {
                                        if((rs1)|(ls1)) break; 
                                    }
                        }
                  
                break;
         case 0x03: 
                
                  Vleft=270 ;    //260//270 OK ca 2 bo thong so
                  Vright=310;   //290//300
                break;
         case 0x04:  //cua qua 2 cot
                
                  Vleft=310;    //310
                  Vright=290;   //200 OK             
                break;
         
         case 0x05:
                /*  
                  Vleft=300;  //270
                  Vright=200; //260 chay thang
                  */
                 Vleft=275;
                 Vright=270; 
                  
                break;
                
/*********************
            BLUE FIELD       
*********************/
         case 0x06: //goc cua 1
                    Vleft=220;
                    Vright=320;
                    for(i=1;i<=temp;i++)
                        {
                            begin_get_encoder();
                            while(enc <100)
                                {
                                  enc =(abs(left_data) + abs(right_data))>>1;
                                }; 
                             LED=(enc*i)/10;    
                             enc =0;
                            
                             if (curve_position==0x01)
                                 if(i>=10) 
                                    {
                                        if((rs1)|(ls1)) break; 
                                    }
                        }
                break;
         case 0x07:
                break;
         
         case 0x08:
                break;
         default :
                break;      
        }     

} 

void turn_RIGHT_line(void)
{
   
    begin_get_encoder();
    while(left_data <8000)
    {
    Vleft=300;
    Vright=50;
    start=0;
    while(!start){;}                        
    }
    while((!rs3))
    {
    Vleft=300;
    Vright=50;
    start=0;
    while(!start){;}
    }   //rs2
    stop(); 
    
}
void turn_LEFT_line(void)
{                    
    begin_get_encoder();
    while(right_data <8000)
    {
    Vright=300;
    Vleft=50;       
    start=0;
    while(!start){;}
    }
    while((!ls3))
    {
    Vright=300;
    Vleft=50;      
    start=0;
    while(!start){;}
    }   //rs2
    stop();
}

void turn_left(char arg)
{ 
int enc;   
  switch(arg)
  {
  case 50:
        begin_get_encoder();
         while(enc <1600)
            {
               Vleft=-100;
               Vright=200;
               enc = right_data;
               LED=enc ;
               
             };
         break;
   case 30:
        
         begin_get_encoder();
         while(enc <1100)
            {
               Vleft=-100;
               Vright=200;
               enc =right_data;
               LED=(enc)/10;
               
             };
         break; 
   case 45:
        
         begin_get_encoder();
         while(enc <1400)
            {
               Vleft=-100;
               Vright=200;
               enc =right_data;
               LED=(enc)/10;
               
             };
         break;
    case 60:
         stop();
         begin_get_encoder();
         while(enc <2900)
            {
               Vleft=-60;
               Vright=300;
               enc =right_data;
               LED=(enc)/10;
               
             }; 
         break;
           
         
   }
}

void turn_right(char arg)
{ 
int enc;   
  switch(arg)
  {
  case 0:
        begin_get_encoder();
         while(enc <1700)
            {
               Vleft=200;
               Vright=-100;
               enc =(abs(left_data) + abs(right_data))>>1;
               LED=enc/10 ;//(enc*i)/10;
               //decide where to stop
               if((enc>1000)&& (ls4)) break;
               
             };
         break;
   case 30:
            
         begin_get_encoder();
         while(enc <1100)
            {
               Vleft=200;
               Vright=-100;
               enc =left_data; 
               LED=enc/10;
            };
         break;      
   case 45:
            
         begin_get_encoder();
         while(enc <1400)
            {
               Vleft=200;
               Vright=-100;
               enc = left_data ;
               LED=enc/10;
            };
         break;
    case 60:  
         stop();   
         begin_get_encoder();
         while(enc <2900)           //2500
            {
               Vleft=300;
               Vright=-60;
               enc =left_data; 
               
               LED=enc/10;
               
            };
         break;
           
         
   }
}


/******************************************
MODE 2_1:
******************************************/
void  MODE_MOVING_BLUE(void) 
{  
 //
    take_the_kago(400); //
    moving_forward(400,10,at_line,stand,qua_doc_X);
    elevator(0);     
    begin_get_encoder();
    while(left_data<23000)
    {
    Vleft=370;
    Vright =200;
    
    }
    begin_get_encoder();
    while(left_data<23000)
    {
    Vleft=370;
    Vright =200;
    
    }
    stop();
 
        
          while(flag_90 !=3)
             {
             Vleft=500;//470
             Vright=200;//240 
             LED=5555;
             }
   stop();            
   
   moving_forward_qua_rung(470,6,at_line,running,qua_rung_X); 
   elevator(1);
   
    
}    
////////////////////////////////////////
void MODE_RETRY_CHKPOINT_1_B(void)
{   
    line_numb=2;//set here to plus 1 line
    moving_forward(400,10,at_line,stand,qua_doc_X);
    elevator(0);     
    begin_get_encoder();
    while(left_data<23000)
    {
    Vleft=370;
    Vright =200;
    
    }
    begin_get_encoder();
    while(left_data<23000)
    {
    Vleft=370;
    Vright =200;
    
    }
    stop();
 
        
          while(flag_90 !=3)
             {
             Vleft=500;//470
             Vright=200;//240 
             LED=5555;
             }
   stop();            
   
   moving_forward_qua_rung(420,6,at_line,running,qua_rung_X); 
   elevator(1);
}   

void MODE_RETRY_CHKPOINT_2_B(void)
{
   moving_forward_qua_rung(420,7,at_line,running,qua_rung_X); 
   elevator(1); 
}

/******************************************
MODE 3_1:
******************************************/
  

/******************************************
MODE 3_2:
******************************************/

void MODE_MOVING_RED(void) //RUNNING in RED field MODE 4-1
{        
char dem=0,strectch_time=140;
Vleft=0;
Vright=0;
//delay_ms(200);
count=0;
    while(count<120)
    {
    if(Vleft>=250) Vleft=250;
    if(Vright>=250) Vright=250;
        else 
            { 
             ++dem ;
             if(dem >= strectch_time) 
                {
                    Vleft +=1;
                    Vright +=1;
                    dem=0;
                }
             }
    
    }
    
    take_the_kago(400); //
    moving_forward(400,10,at_line,stand,qua_doc_X);
    elevator(0); 
    begin_get_encoder();
    while(right_data<23000)
    {
    Vleft=240;
    Vright =370;
    LED= left_data;
    
    }
    begin_get_encoder();
    while(right_data<23000)
    {
    Vleft=240;
    Vright =370;
    LED= left_data;
    
    }                                      
    
    //stop();
       while(flag_90 !=3)
             {
             Vleft=240;//470
             Vright=500;//240 
             LED=5555;
             }
   //stop();
                      
   moving_forward_qua_rung(470,6,at_line,running,qua_rung_X); 
   elevator(1);
} 

void MODE_RETRY_CHKPOINT_1_R(void)
{
    line_numb=2;//set here to plus 1 line
    moving_forward(400,10,at_line,stand,qua_doc_X);
    elevator(0); 
    begin_get_encoder();
    while(right_data<23000)
    {
    Vleft=240;
    Vright =370;
    LED= left_data;
    
    } 
    begin_get_encoder();
    while(right_data<23000)
    {
    Vleft=240;
    Vright =370;
    LED= left_data;
    
    }                                     
    
    //stop();
       while(flag_90 !=3)
             {
             Vleft=240;//470
             Vright=500;//240 
             LED=5555;
             }
   //stop();
                      
   moving_forward_qua_rung(470,6,at_line,running,qua_rung_X); 
   elevator(1);

}

void MODE_RETRY_CHKPOINT_2_R(void)
{
    moving_forward_qua_rung(470,7,at_line,running,qua_rung_X); 
    elevator(1);
}


/***************************************** 
MODE 4_1:
******************************************/
void MODE_4_1(void)
{
//char dem,stretch_time=70;
 Vleft=300;
 Vright=300;  
  
} 
/***************************************** 
MODE 4_2:
******************************************/
void MODE_4_2(void)
{
           

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -