임베디드/아두이노
[아두이노] 39. 병아리 부화기 및 육추기 겸용 만들기 (7) 전란기 소스 코드
copynull
2024. 5. 28. 13:36
이번 시간에는 전란기를 제어하는 코드를 작성하도록 하겠습니다.
전란의 조건은 매 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초 동안 전란기를 작동시켜주는 코드입니다.