Thinking Different




 

이번 시간에는 전란기를 제어하는 코드를 작성하도록 하겠습니다.

 

 

전란의 조건은 매 4시간마다 전란하며, 전란 시간은 30 ~ 40초 정도로 해주시면 됩니다.

 

 

코드를 보겠습니다.

 

Incubator_Main.ino

...
#define EGG_MOVER       10  // 전란기 (220v 릴레이)
...

...
extern unsigned long EggMoveTime;
...

void setup()
{  
  ...
  pinMode(EGG_MOVER, OUTPUT);   // 전란기
  ...
}

void loop() 
{
  ...

  if(millis()-beforeTime>=1000)
  {
    nowTime++;
    EggMoveTime++;             // 전란 시간 카운터
    beforeTime = millis();

    ...

    // 전란기 가동
    CheckEggMove();
      
    ...
  }
}

 

메인 함수 내에 전란기에 관련된 코드를 추가합니다.

 

 

_eggRotate.ino

const int EGG_STEP_TIME = (60*60*4);   // 전란 시간 간격 (4시간 마다)
unsigned long EggMoveTime = 0;
#define EGG_TIME 40               // 전란기 움직이는 시간 (초)

// 전란기 가동
void CheckEggMove()
{
  // 4시간 체크 후 전란기 움직이는 시간동안 HIGH 하여 전란기 작동
  if(EggMoveTime >= EGG_STEP_TIME && EggMoveTime <= EGG_STEP_TIME + EGG_TIME)
  {
    digitalWrite(EGG_MOVER, HIGH);
  }
  else
  {
    // 전란이 끝나면 LOW로 작동을 멈추고 전란 시간 카운터를 리셋함
    digitalWrite(EGG_MOVER, LOW);
    if(EggMoveTime >= EGG_STEP_TIME + EGG_TIME) 
      EggMoveTime = 0;
  }
}

 

전란기 시간을 체크하고 4시간마다 40초 동안 전란기를 작동시켜주는 코드입니다.