본문 바로가기

나래온 1기(~2012.6)/따르미 활용 팁

브레이크값 자동으로 걸기(따르미Pro 2008)


처음에는 브레이크값을 엄청 신중하게 겁니다만 나중에 가보면 브레이크값은 거의 쓰레기값이라고밖에 생각합니다. 그도 그럴것이 소스 자체에서도 큰 차이가 없도록 설계되어있기 때문이죠. 그런 관계로 이번에는 브레이크값을 자동으로 걸도록 해 보겠습니다.

Case. 따르미Pro 2008 신모델

변경 전

void AUTO_TRACE2(unsigned char dir,unsigned int next_speed, unsigned char type, unsigned int brake, int speed)
{
 while(1)
 {  
  if((LLL_S)&&(RRR_S))
  {
   TRACE2(speed);
   goto MEET;
  }
  else if((LLL_S)&&(RRR_S==0))
  {
   TRACE_E(speed);
   if((type==E)&&LLL_S) goto MEET;
   //else if((type==E)&&LLL_S&&(L_S||R_S||L_BS||R_BS)) goto MEET;
   else if((type==T)&&(L_S||R_S))
   {
   // m_bra=0;
   // DC_MOVE(0,speed);
   // while(m_bra<180) if(RRR_S) goto MEET;
    m_bra=0;
    while(RRR_S==0)
    {
    DC_MOVE(-(speed/10)*3,speed);
    }
    goto MEET;
   }
  } 
  else if((RRR_S)&&(LLL_S==0))
  {
   TRACE_A(speed);
   if((type==A)&&RRR_S) goto MEET;
  // else if((type==A)&&RRR_S&&(L_S||R_S||L_BS||R_BS)) goto MEET;
   else if((type==T)&&(L_S||R_S))
   {
   // m_bra=0;
   // DC_MOVE(speed,0);
   // while(m_bra<180) if(LLL_S) goto MEET;
   m_bra=0;
    while(LLL_S==0)
    {
    DC_MOVE(speed,-(speed/10)*3);
    }
    goto MEET;
   }  
  } 
  else TRACE2(speed);
 }

 MEET:
 AUTO_TURN(dir,type,break,speed);
}

변경 후
void AUTO_TRACE2(unsigned char dir,unsigned int next_speed, unsigned char type, int speed)
{
 while(1)
 {  
  if((LLL_S)&&(RRR_S))
  {
   TRACE2(speed);
   goto MEET;
  }
  else if((LLL_S)&&(RRR_S==0))
  {
   TRACE_E(speed);
   if((type==E)&&LLL_S) goto MEET;
   //else if((type==E)&&LLL_S&&(L_S||R_S||L_BS||R_BS)) goto MEET;
   else if((type==T)&&(L_S||R_S))
   {
   // m_bra=0;
   // DC_MOVE(0,speed);
   // while(m_bra<180) if(RRR_S) goto MEET;
    m_bra=0;
    while(RRR_S==0)
    {
    DC_MOVE(-(speed/10)*3,speed);
    }
    goto MEET;
   }
  } 
  else if((RRR_S)&&(LLL_S==0))
  {
   TRACE_A(speed);
   if((type==A)&&RRR_S) goto MEET;
  // else if((type==A)&&RRR_S&&(L_S||R_S||L_BS||R_BS)) goto MEET;
   else if((type==T)&&(L_S||R_S))
   {
   // m_bra=0;
   // DC_MOVE(speed,0);
   // while(m_bra<180) if(LLL_S) goto MEET;
   m_bra=0;
    while(LLL_S==0)
    {
    DC_MOVE(speed,-(speed/10)*3);
    }
    goto MEET;
   }  
  } 
  else TRACE2(speed);
 }

 MEET:
 AUTO_TURN(dir,type,speed/10,speed);
}

2009/02/01 - [도약기(2008.7~)/따르미 활용 팁] - SLOW모델과 FAST모델 쉬운 변경법(따르미Pro 2008)
2008/08/12 - [힘든 시기(~2008.7)/라인트레이서 완.전.분.석.] - 라인트레이서 완.전.분.석. - 5. 라인트레이서의 꽃, 길 찾기! [完]
2008/08/11 - [힘든 시기(~2008.7)/라인트레이서 완.전.분.석.] - 라인트레이서 완.전.분.석. - 4. 힘찬 시작을 위하여, 모터 파워 온!
2008/08/09 - [힘든 시기(~2008.7)/라인트레이서 완.전.분.석.] - 라인트레이서 완.전.분.석. - 3. 모든 일의 시작, 초기화!
2008/08/07 - [힘든 시기(~2008.7)/라인트레이서 완.전.분.석.] - 라인트레이서 완.전.분.석. - 2. (2) WinAVR은 뭘까?
2008/08/06 - [힘든 시기(~2008.7)/라인트레이서 완.전.분.석.] - 라인트레이서 완.전.분.석. - 2. (1) AVRStudio는 뭘까?
2008/08/05 - [힘든 시기(~2008.7)/라인트레이서 완.전.분.석.] - 라인트레이서 완.전.분.석. - 1. 들어가며