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

in kr-dev 커뮤니티2 years ago

안녕하세요 Jimae입니다.

스위치의 눌림으로 인터페이스를 조정하는대 스위치가 BACK이라는 속성을 가질때

즉 아무것도 선택을 안할때의 동작입니다.

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

말그대로 레이저의 거리측정을 멈추는 함수도 사용하고 곡률측정도 멈춥니다.

또한 조명 LED의 사용도 멈추고 그에관한 로터리 밝기조절 기능도 꺼버립니다.

이런상태에서 동작할것은 LCDSelect(RotarySelectRead()); 함수밖에없어요.

이함수는 LCD를 주기적으로 다시 그려주면서 선택하는 화면을 바꿔주는 역활을 합니다.

화면 구성에대한 사진이 없내요.


String Function[LINE_LENGTH] = {
                     "1.Curvature   ",
                     "2.Distance    ",
                     "3.Wind Speed  ",
                     "4.Illuminance ",
                     "5.Light       " };

LCD 의 화면구성은 위와 같이 구성되어있는대

1번에는 곡률

2번에는 거리

3번에는 풍속

4번에는 조도

5번에는 조명

이렇게 구성되어있습니다.

void LCDSelect(unsigned char selectLine)
{
  String screenBuffer[LINE_LENGTH];

 if(selectLine > LINE_LENGTH && selectLine < 1) return;    // 1~4 사이 데이터

  
  for(unsigned char num1 = 0; num1 < LINE_LENGTH; num1++)
  {
    if((selectLine - 1) == num1) screenBuffer[num1] = '>' + Function[num1];    // selectLine 현재 배열의 주소값으로 계산 하기 때문에 -1
    else screenBuffer[num1] = ' ' + Function[num1];
  }



  if(screenNumber == 1 && selectLine >= 4) screenNumber = 2;
  else if(screenNumber == 2 && selectLine == 1) screenNumber = 1;
  else if(screenNumber == 2 && selectLine == 5) screenNumber = 3;
  else if(screenNumber == 3 && selectLine <= 2) screenNumber = 2; 

  if(screenNumber == 1) plusAdd = 0;
  else if(screenNumber == 2) plusAdd = 1;
  else plusAdd = 2;
  

  for(unsigned char num2 = 0; num2 < 3; num2++)
  {
     LCDScreen[num2] = screenBuffer[num2 + plusAdd];
  }


  LCDdrawing();
  LCDclear();
}

이것의 역활은

String Function[LINE_LENGTH] = {
"1.Curvature ",
"2.Distance ",
"3.Wind Speed ",
"4.Illuminance ",
"5.Light " };

이 배열을 컨트롤 하여 적절하게 화면을 구성해서 LCD 화면으로 출력해주는 역활을 합니다.

핵심은 screenBuffer 변수에 LCD에 쓸 데이터를 저장해놓았다 선택된 화면에 따라서 LCD 데이터를 적절하게 그려주는 역활을 하고있어요.

이부분에 대해서 설명 다시 다음 부터 이어서 하도록 하겠습니다.

다들 좋은하루 되세요.

극한의 아두이노 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
극한의 아두이노 DIY생활 - 곡률측정기15

Sort:  
 2 years ago 

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

Coin Marketplace

STEEM 0.26
TRX 0.20
JST 0.039
BTC 95954.94
ETH 3656.61
USDT 1.00
SBD 3.92