반응형
여기서 데드밴드를 설정해 보자.
데드밴드에 생소한 사람도 있을것 같은데, 죽은 구간이다.
즉 한개 값으로 제어하는 경우 단순명확하지만,
특정상황에서는 작동이 반복될수가 있다.
켜지고 꺼지고 왔다 갔다.
물론 이렇게 되면 기기나 장치에 무리가 가서 고장이 발생하기 좋다.
그래서 죽은 구간을 설정한다,
즉 온도가 올라 갈때는 에어컨이 켜지고 온도가 내려 갈때는 꺼지고,
예를 들어 25도씨에 커진다고 하면 특정 상황에서는 에어컨이 켜지고 꺼지고를 반복하게 된다.
27도씨 정도에 커지고, 24도씨에 꺼지 만들수가 있다.
이런 경우 28도씨에서 26도씨에 들어 간다고 해서 꺼지는것은 아니다.
24도씨가 되어야 꺼진다. 반데로 23도씨에서 25씨가 된다고 해도 커지는것은 아니다.
즉 24도씨에서 27도씨에 죽은구간 데드밴드를 설정 할 수가 있다.
소스코드는 조도 센서를 이용해서 40에서 60으로 설정하고 LED로 확인하게 했다.
#define BAUD 115200
volatile int isonoff = 0;
void setup()
{
Serial.begin(BAUD);
pinMode(8, OUTPUT);
digitalWrite(8, LOW);
isonoff = 0;
Serial.print("ARDUINO ONOFF TEST!!! \n");
}
void loop()
{
int iA0 = analogRead (A0);
int pA0 = map(iA0, 0, 1023, 0, 100);
Serial.println(pA0);
do_something(!control(40, 60, pA0));
delay(1000);
}
void do_something(int _onoff)
{
static int ponoff = 0;
if (ponoff == _onoff) return ;
if(_onoff == 1)
{
Serial.print("LED ON \n");
digitalWrite(8, HIGH);
}
else
{
Serial.print("LED OFF \n");
digitalWrite(8, LOW);
}
delay(100);
ponoff = _onoff;
}
bool control(double _1st, double _2st, double value)
{
bool case1;
bool case2;
static bool case3 = false;
static bool case4 = false;
case1 = value <= _1st ? true:false;
case2 = value <= _2st ? true:false;
case3 = case1 || case4;
case4 = case2 && case3;
return case4;
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
'아두이노' 카테고리의 다른 글
아두이노 reset -#1 (0) | 2020.01.27 |
---|---|
아두이노 on/off 제어 - #3 (0) | 2020.01.12 |
아두이노 on/off 제어 - #1 (0) | 2020.01.12 |
아두이노와 C/C++ 이야기 -#6 (0) | 2020.01.12 |
아두이노와 C/C++ 이야기 -#5 (0) | 2020.01.10 |
댓글