온도 센서를 사용해서 피부의 온도를 측정하고 LED를 통해서 표현해보도록 해볼께요.
회로 구성에 필요한 준비물은 아래와 같아요.
- LED
- 220 OHM 레지스터
- 온도센서
- 아두이노
- 빵판
- 점퍼선
자 그럼 시작해 볼까요. 먼저 아래와 같이 아두이노와 빵판에 회로를 구성합니다.
LED는 아두이노의 디지털핀에 연결을 하고 온도센서는 아날로그핀에 연결을 합니다. 이유는 LED는 0과 1로 제어가 가능하지만 온도 센서는 그 값이 범위를 가진 숫자로 나오기 때문입니다.
그리고 위의 회로에 따라서 실제 회로를 구성해 볼께요.
짠 아래처럼 회로가 구성되었습니다.
그럼 센서 제어를 위한 코드를 한번 볼까요.
전체적인 구성은 어렵지 않습니다. 온도센서에서 값을 읽어서 그 값에 맞춰서 적절히 LED를 켜주거나 꺼주면 되죠. 또 온도센서에서 읽은 값을 시리얼 연결을 통해서 컴퓨터 화면에서 읽도록 해줄께요. 그래야 센서값 변화를 쉽게 확인할 수 있으니까요.
// 현재 온도에 맞춰서 설정해주세요.
float base_temp = 22.0;
void setup() {
// put your setup code here, to run once:
// 아두이노에서 보내는 메세지를 컴퓨터에서 받기 위해서
// 시리얼통신을 시작해줍니다.
Serial.begin(9600);
// LED 제어를 위해서 디지털핀을 출력모드로 설정합니다.
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
// 그리고 핀들의 초기상태를 모두 LOW로 줘어서,
// LED가 off상태가 되도록 합니다.
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
void loop() {
// put your main code here, to run repeatedly:
// 온도센서는 아날로그 핀에 연결되어있습니다.
// 아날로그 핀에서 센서값을 읽어옵니다.
int sensor_value = analogRead(A1);
// 시리얼통신을 통해서 메세지를 출력합니다.
// 해당 메세지는 시리얼모니터를 통해서 확인이 가능합니다.
Serial.print("Sensor Value: ");
Serial.print(sensor_value);
// 센서값을 통해서 볼트값을 계산합니다.
float voltage = (sensor_value / 1024.0) * 5.0;
Serial.print(", Volts: ");
Serial.print(voltage);
Serial.print(", degree C: ");
// 그리고 볼트 값을 통해서 온도를 계산합니다.
float temperature = (voltage - .5) * 100;
Serial.println(temperature);
// 조건문에서 센서의 온도가 올라갈수록
// LED가 하나씩 켜지도록 설정합니다.
if(temperature < base_temp) {
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
} else if(temperature >= base_temp+2 && temperature < base_temp+4) {
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
} else if(temperature >= base_temp+4 && temperature < base_temp+6) {
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
} else {
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
}
delay(1);
}
그리고 프로그램을 아두이노 보드에 업로드 해볼께요. 어떤 값들이 읽히는지는 아래처럼 아두이노 툴의 시리얼 모니터를 실행해보면 확인할 수 있습니다. 손으로 온도센서를 만지면 온도가 올라가는것을 시리얼모니터에서 확인할 수 있습니다. 또한 LED를 통해서 확인할 수 도 있겠죠.
이번 포스팅에서는 온도 센서값을 읽어오는것에 대해서 알아봤습니다. 기억해야 할 것은 아래 두 가지로 요약할 수 있겠습니다.
- 온도센서는 아날로그핀을 통해서 읽어온다.
- 아두이노에서 출력하는 메세지를 보기 위해서는 시리얼통신을 사용한다.
그럼 빠이~!!
'로보틱스 > 아두이노' 카테고리의 다른 글
#2 디지털 핀 입출력(Spaceship Interface) (0) | 2020.10.12 |
---|---|
#1 기초회로 (Get To Know Your Project) (0) | 2020.10.08 |
아두이노 시작하기 (0) | 2020.09.29 |
아두이노 스타터 키트 개봉기 (0) | 2020.09.26 |
댓글