5. 소스코드 (주석 필수)
while (Serial1.available()) {
char ch = Serial1.read();
value += String(ch);
int first = value.indexOf(","); // 첫번째 콤마위치
int second = value.indexOf(",", first + 1); // 두번째 콤마 위치
String str1 = value.substring(0, first); // 첫번째 토큰
String str2 = value.substring(first + 1, second); // 두번째 토큰
if (str2 == "t") { //온도값을 보낼시
if (str1.toInt() < sensor.readTemperature()) { //지정한 온도값이 센서 온도값보다 높을때
digitalWrite(relay1, HIGH); //열선패드 가동
} else if (str1.toInt() > sensor.readTemperature()) { //지정한 온도값이 센서 온도값보다 낮을때
digitalWrite(cooler, HIGH); //팬 가동
}
if (str1.toInt() < sensor.readTemperature() - 1 && str1.toInt() > sensor.readTemperature() + 1)) { 오차범위
digitalWrite(relay1, LOW);
digitalWrite(cooler, LOW);
}
value = "";
}
if (str2 == "s") { //습도값을 보낼시
if (str1.toInt() > sensor.readHumidity()) { //지정한 습도값이랑 센서 습도값이랑 높을때
digitalWrite(relay2, HIGH); //호스 가동
} else if (str1.toInt() < sensor.readHumidity()) { //지정한 습도값이랑 센서 습도값보다 낮을떼
digitalWrite(cooler, HIGH); //팬 가동
}
if (str1.toInt() < sensor.readHumidity() - 1 && str1.toInt() > sensor.readHumidity() + 1) { 오차범위
digitalWrite(relay2, LOW);
digitalWrite(cooler, LOW);
}
value = "";
}
6. 문제점 및 에러 내용
제가 블루투스를 통한 자동 온습도 제어를 하고싶은데 현재 블루투스를 통한 통신 및 온습도를 설정해 해당 릴레이를 제어하는것까지는 성공했으나 정해진 온도랑 온습도 센서에서 측정하는 온도가 같아졌을 때 릴레이가 종료되는것을 하고싶은데 이 부분이 해결이 되질않아 질문글 남깁니다... 온습도 센서는 Si702를 사용하고있습니다(==을 사용하는 방식으로는 작동이 되질않아 오차범위를 설정함)
|