간단한 온도센서 LM35를 사용해본다. 트랜지스터랑 똑같이 생겼다. 키트 내에 2N 2222A 트랜지스터가 있고, LM35 온도 센서가 있다.
LM35는 온도에 따라 출력 전압이 달라지는데 0'c일 때 0V, 1'c 오를때마다 10mV씩 전압이 오른다.
그래서 온도는 (5.0 LM35 출력값 100) / 1024.0으로 계싼할 수 있다.
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
int temperature = analogRead(A0);
double value = (5.0 * temperature * 100.0) /1024.0;
Serial.println("Temperature (raw): " + String(temperature));
Serial.println("Temperature: " + String(value) + "'C");
delay(1000);
}


온습도 센서로 DHT11 센서모듈을 많이 사용한다.
온도값과 습도값 둘 다 얻을 수 있는데 통신 라이브러리, 센서 라이브러리가 필요하다.

DHT를 설치하다 보면 의존성으로 adafruit unified sensor by adafruit가 함께 설치된다.
#include "DHT.h"
#define DHTPIN 5 //온습도 센서는 5번에 연결
#define DHTTYPE DHT11 //DHT11 온습도 센서
DHT dht(DHTPIN, DHTTYPE);
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.println("DHT11 test");
}
void loop() {
// put your main code here, to run repeatedly:
int h = dht.readHumidity();//습도값을 h에 저장
int t = dht.readTemperature();
Serial.print("Humidity : " + String(h) + "% ");
Serial.println("Temperature : " + String(t) + "'c");
delay(2000);
}


int ledR = 8;
int ledG = 9;
int ledB = 10;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(ledR, OUTPUT);
pinMode(ledG, OUTPUT);
pinMode(ledB, OUTPUT);
digitalWrite(ledR, LOW);
digitalWrite(ledG, LOW);
digitalWrite(ledB, LOW);
}
void loop() {
// put your main code here, to run repeatedly:
int temperature = analogRead(A0);
double celsius = 5.0 * temperature * 100.0 / 1024.0;
Serial.println("celsius : " + String(celsius));
if(celsius > 30){//Red
digitalWrite(ledR, HIGH);
digitalWrite(ledG, LOW);
digitalWrite(ledB, LOW);
}
else if(celsius > 20){//Green
digitalWrite(ledR, LOW);
digitalWrite(ledG, HIGH);
digitalWrite(ledB, LOW);
}
else{//Blue
digitalWrite(ledR, LOW);
digitalWrite(ledG, LOW);
digitalWrite(ledB, HIGH);
}
delay(500);
}

