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

in kr-dev 커뮤니티2 years ago

안녕하세요 Jimae입니다.

LCDSensorView 이함수부터 다시 이어서 하도록하겠습니다.

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();

}

실제 기능을 실행을 하기위해서 로터리에서 값을 읽어옵니다.

unsigned char RotaryDataRead(void)
{
  selectCountFlag = STOP;
  
  return (unsigned char)(selectdata + 1);          // LCD 뿌리는 함수값에 맞출려고 1더함 1~5
}

void LCDSensorView(unsigned char selectSensor)
{
  switch(selectSensor)
  {
    case CURVATURE:
                  CurvatureCalculationStart();
                  LCDScreen[1] = "   R" + String(CurvatureRead()) + " cm  ";
                  break;
    case DISTANCE:
                  DistanceCalculationStart();
                  LCDScreen[1] = "    " + String(DistanceRead()) + " cm  ";
                  break;
    case WINDSPEED:
                  LCDScreen[1] = "    " + String(WindSensorRead()) + " m/s  ";
                  break;
    case ILLUMINANCE:
                  LCDScreen[1] = "    " + String(LightSensorRead()) + " lux  ";
                  break;
    case LIGHT:   
                  LightControl(RotaryLightRead());
                  LCDScreen[1] = "Please";
                  LCDScreen[2] = "Volume control";
                  break;
    default:
            break;                             
  }

  LCDdrawing();
  LCDclear();
}

RotaryDataRead 이것이 그 함수이며 LCDSensorView 함수의 인자값으로 실행되어 집니다.

이것도 마찬가지로 LCD에 값을 뿌리기 위한 함수로 구성되어 있지만

  switch(selectSensor)
  {
    case CURVATURE:
                  CurvatureCalculationStart();
                  LCDScreen[1] = "   R" + String(CurvatureRead()) + " cm  ";
                  break;
    case DISTANCE:
                  DistanceCalculationStart();
                  LCDScreen[1] = "    " + String(DistanceRead()) + " cm  ";
                  break;
    case WINDSPEED:
                  LCDScreen[1] = "    " + String(WindSensorRead()) + " m/s  ";
                  break;
    case ILLUMINANCE:
                  LCDScreen[1] = "    " + String(LightSensorRead()) + " lux  ";
                  break;
    case LIGHT:   
                  LightControl(RotaryLightRead());
                  LCDScreen[1] = "Please";
                  LCDScreen[2] = "Volume control";
                  break;
    default:
            break;                             
  }

CurvatureRead, DistanceRead, WindSensorRead, LightSensorRead 이 함수들은 전부

실제 센서들의 값을 읽어와서 LCD에 값을 뿌리는 함수입니다.

실질적으로 변수만 가져오는 방식이고 주기적으로 데이터를 뿌리기 위해 이러한 방식으로 구현을 했습니다.

나머지는 저번에 설명한것과 같습니다.

주기적으로 LCD 화면을 지우고 다시 데이터를 쓰는 방법입니다.

  SwitchDetect();



  LaserDistanceCalculation();

  LaserCurvatureCalculation();

그다음은 이 함수 들인대 다음에 이어서 하도록 하겠습니다.

다들 좋은 하루 되세요.

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

Sort:  
 2 years ago 

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

Coin Marketplace

STEEM 0.18
TRX 0.14
JST 0.030
BTC 58679.35
ETH 3155.04
USDT 1.00
SBD 2.44