극한의 아두이노 DIY생활 - 곡률측정기15
안녕하세요 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
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.