극한의 아두이노 DIY생활 - 시간을 재는 방석10

in kr-dev 커뮤니티4 years ago

안녕하세요! Jimae입니다.

자 오늘부터 하드웨어적인 부분이 다 설명된것 같아 setup 함수를 뺀 나머지 부분 loop 함수레 대해 말해볼까 합니다.

void loop() {
  // put your main code here, to run repeatedly:
  
 if(analogRead(pressure_pin[0]) >= SITDETECTION || analogRead(pressure_pin[1]) >= SITDETECTION)
 {
   timeFlag = START;
 }
 else
 {
   timeFlag = STOP;
 }

 FNDDisplay();

}

loop함수는 무한으로 돌아가는 함수라고 보시면 됩니다.

전원이 켜질때 부터 setup함수 실행한 뒤에 loop함수를 전원이 꺼질때까지 loop안에 프로그램을 끝없이 실행시키는 함수입니다.

자 loop함수 안에 첫번째 줄부터 해석해 볼까요?

if(analogRead(pressure_pin[0]) >= SITDETECTION || analogRead(pressure_pin[1]) >= SITDETECTION)
{
  timeFlag = START;
}
else
{
  timeFlag = STOP;
}

if 문에 있는 것은 조건문 이라는 것입니다.

if(analogRead(pressure_pin[0]) >= SITDETECTION || analogRead(pressure_pin[1]) >= SITDETECTION)

즉 이문구의 의미는 압력센서가 하나라도 인식이 된다면

timeFlag 라는 변수를 이용하여 FND에 뿌려질 시간의 값을 카운트 하겠다는거죠.

timeFlag가 어디에 쓰여있냐면

void TimeCount(void)
{
  if(timeFlag != START) return;
  
  second++;

  if(second >= 60)
  {
    minute++;
    
    if(minute >= 60)
    {
      hour++;

      if(hour >= 24) hour = 0;
      minute = 0;
    }
    second = 0;
  }
}

1초마다 인터럽트가 걸리도록 설정해놓았던 TimeCount 함수안에서 if문안에 쓰이고 있습니다.

timeFlag 값이 STOP이라면 TimeCount함수를 그냥 바로 종료 해버리게 return을 해버리는 기능을 하고있어요.

그러면 지금까지 설명했던 기능들을 종합해 보자면

시간을 카운트 해주는 기능

압력센서의 데이터를 감지하는 기능

사용자가 자리를 이탈했을때 시간을 초기화 해주는 기능

총 4가지를 구현해야 하는 사항중에 3가지를 이렇게 인터럽트와 if문을 사용하여 기능을 구현했습니다.

마지막으로 남은 기능은

FND를 주기적으로 Display해주는 기능

이것인대요.

FND를 주기적으로 Display이 해주기 위해 생각보다 길어져서 이것은 다음번에 설명드리도록 하겠습니다.

이상!! Jimae였습니다. 다들 좋은 하루 되세요.

극한의 아두이노 DIY생활 - 시간을 재는 방석1
극한의 아두이노 DIY생활 - 시간을 재는 방석2
극한의 아두이노 DIY생활 - 시간을 재는 방석3
극한의 아두이노 DIY생활 - 시간을 재는 방석4
극한의 아두이노 DIY생활 - 시간을 재는 방석5
극한의 아두이노 DIY생활 - 시간을 재는 방석6
극한의 아두이노 DIY생활 - 시간을 재는 방석7
극한의 아두이노 DIY생활 - 시간을 재는 방석8
극한의 아두이노 DIY생활 - 시간을 재는 방석9

Sort:  
 4 years ago 

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


안녕하세요.
이 글은 SteemitKorea팀(@jungjunghoon)님께서 저자이신 @jimae님을 추천하는 글입니다.
소정의 보팅을 해드렸습니다 ^^ 항상 좋은글 부탁드립니다
SteemitKorea팀에서는 보다 즐거운 steemit 생활을 위해 노력하고 있습니다.
이 글은 다음날 다시 한번 포스팅을 통해 소개 될 예정입니다. 감사합니다!

Coin Marketplace

STEEM 0.04
TRX 0.32
JST 0.080
BTC 60288.06
ETH 1572.33
USDT 1.00
SBD 0.47