#include <OneWire.h>
#include <DallasTemperature.h>
int RLED = 9; // R,G,B LED를 아두이노 우노 보드 9,10,11번 핀에 연결
int YLED = 10;
int BLED = 11;
float celcius; // 섭씨 온도를 소수점까지 표시
float farenheit;// 화씨 온도를 소수점까지 표시
#define ONE_WIRE_BUS 2// 데이터 아웃핀을 아두이노 2번에 연결
OneWire oneWire(ONE_WIRE_BUS);// Onewire 통신을 활성화 시켜줌
DallasTemperature sensors(&oneWire); // oneWire 설정 값을 라이브러리로 전달
void setup(void)
{
pinMode(RLED, OUTPUT); //세가지 LED 핀을 출력으로 설정
pinMode(YLED, OUTPUT);
pinMode(BLED, OUTPUT);
sensors.begin(); // 라이브러리를 활성화
Serial.begin(9600); // 시리얼 모니터 시작
}
void loop(void)
{
sensors.requestTemperatures(); // 온도를 확인하라는 명령을 보내줌
celcius = sensors.getTempCByIndex(0); //읽어들인 온도값을 저장
farenheit = (sensors.getTempCByIndex(0) * 9.0) / 5.0 + 32.0 ; //화씨 온도로 변경
if(celcius < 22) // 섭씨 온도가 정해진 값보다 낮으면 파란색 LED를 켜줌
{
digitalWrite(BLED, HIGH);
digitalWrite(YLED, LOW);
digitalWrite(RLED, LOW);
}
else if(22< celcius < 25) // 섭씨 온도가 정해진 값 사이에 있으면 노란색 LED를 켜줌
{
digitalWrite(BLED, LOW);
digitalWrite(YLED, HIGH);
digitalWrite(RLED, LOW);
}
if(celcius > 25)// 섭씨 온도가 정해진 값보다 높으면 빨간색 LED를 켜줌
{
digitalWrite(BLED, LOW);
digitalWrite(YLED, LOW);
digitalWrite(RLED, HIGH);
}
Serial.print("Temperature: ");
Serial.print(celcius);
Serial.print("C | ");// 시리얼 모니터에 섭씨온도 표시
//print the temperature in Fahrenheit
Serial.print(farenheit);
Serial.println("F");// 시리얼 모니터에 화씨온도 표시
delay(500);
}