극한의 아두이노 DIY생활 - 곡률측정기15

in kr-dev 커뮤니티2 years ago

안녕하세요 Jimae입니다.

저번에 이어서 하도록 하겠습니다.

void loop() {
  // put your main code here, to run repeatedly:

   if(drawFlag) 
   {
    if(SwitchStateRead() == BACK)
    {
      LCDSelect(RotarySelectRead());
      DistanceCalculationStop();
      CurvatureCalculationStop();
      RotaryLightCountStop();
      LightOff();
    }
    else 
    {
      LCDSensorView(RotaryDataRead());
    }

    drawFlag = STOP;
   }
   
  SwitchDetect();



  LaserDistanceCalculation();

  LaserCurvatureCalculation();

}

200ms 단위로 프로그램이 도는 부분이 있는대요.

 if(drawFlag) 
   {
    if(SwitchStateRead() == BACK)
    {
      LCDSelect(RotarySelectRead());
      DistanceCalculationStop();
      CurvatureCalculationStop();
      RotaryLightCountStop();
      LightOff();
    }
    else 
    {
      LCDSensorView(RotaryDataRead());
    }

    drawFlag = STOP;
   }

이곳은 전반적으로 LCD 부분입니다.

스위치로 기능들을 On, Off를 수행해야 했기 때문에 BACK은 모든기능에대한 Off 기능으로 보시면되고요.

    if(SwitchStateRead() == BACK)
    {
      LCDSelect(RotarySelectRead());
      DistanceCalculationStop();
      CurvatureCalculationStop();
      RotaryLightCountStop();
      LightOff();
    }

아무것도 선택을 안한 기능들을 위에서 실행한다고 보시면 됩니다.

    else 
    {
      LCDSensorView(RotaryDataRead());
    }

그리고 이부분은 선택이 되어 실행하는 부분으로 보시면 됩니다.

스위치의 상태는 loop 함수내에 있는
SwitchDetect();

함수로 지속적으로 감시를 합니다.

void SwitchDetect(void)
{
   if(switchInputCount > 3 && (millis() - switchTime) > SWITCHDELAY) // 스위치 인식
   { 

    if(switchState == BACK) switchState = ENTER;
    else switchState = BACK;
     
     switchInputCount = 0;
   }
}

이것으로 스위치가 눌렸는지 안눌렸는지를 판단하는대

스위치에 외부 인터럽트 기능으로 달려있어서 다른 함수에서 실제 switchInputCount 변수를 카운트를 하고

그것을 기준으로 눌렸는지 안눌렸는지 판단을 합니다.

void SwitchInput(void)
{
  switchTime = millis();
  switchInputCount++;
}

이부분이 스위치 인터럽트 함수 부분입니다.

오늘은 늦어서 여기까지 하겠습니다.

다들 좋은 하루 되세요.

극한의 아두이노 DIY생활 - 곡률측정기1
극한의 아두이노 DIY생활 - 곡률측정기2
극한의 아두이노 DIY생활 - 곡률측정기3
극한의 아두이노 DIY생활 - 곡률측정기4
극한의 아두이노 DIY생활 - 곡률측정기5
극한의 아두이노 DIY생활 - 곡률측정기6
극한의 아두이노 DIY생활 - 곡률측정기7
극한의 아두이노 DIY생활 - 곡률측정기8
극한의 아두이노 DIY생활 - 곡률측정기9
극한의 아두이노 DIY생활 - 곡률측정기10
극한의 아두이노 DIY생활 - 곡률측정기11
극한의 아두이노 DIY생활 - 곡률측정기12
극한의 아두이노 DIY생활 - 곡률측정기13
극한의 아두이노 DIY생활 - 곡률측정기14

Sort:  
 2 years ago 

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Coin Marketplace

STEEM 0.18
TRX 0.14
JST 0.029
BTC 57800.38
ETH 3127.30
USDT 1.00
SBD 2.40