코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2015-01-23 10:36:28
집 안의 온도를 알고 싶은데 집에 온도계가 없으신가요?
아두이노와 아날로그 온도센서만 있다면 온도계가 없어도 집 안의 온도를 잴 수 있습니다.
물론 단순하게 컴퓨터에 온도값을 출력해 주는 모습이 아닌 서보모터를 사용하여 자동차 계기판처럼 온도 측정계를 만들 수 있습니다.
아날로그 온도센서가 측정한 값을 서보모터의 각도값으로 변환시켜 서보모터의 움직임을 통해 우리는 현재의 온도를 눈으로 볼 수 있습니다.
출처 : http://www.samsamstory.com/1268
아두이노를 사용하여 컴퓨터 모니터 위에 온도 측정계를 달아보는건 어떨까요?
NO | 부품명 | 수량 | 상세설명 |
1 | 오렌지보드 | 1 | |
2 | 서보모터 | 1 | 서보모터 mini |
6 | 아날로그 온도 센서 | 1 | TMP36 |
9 | 브레드 보드 | 1 | |
10 | 점퍼 케이블 | 8 |
부품명 | 오렌지보드 | 서보모터 | 아날로그 온도 센서 | 브레드보드 | 점퍼 케이블 |
부품 사진 |
계기판은 반원으로 0부터 30도까지의 온도를 표현할 수 있습니다.
계기판의 바늘은 뒤쪽에 달린 서보모터를 통해 제어하게 됩니다.
// 서보모터를 쉽게 제어하기 위하여 라이브러리를 추가합니다.
#include <Servo.h>
//변수 선언
float voltage = 0;
float sensor = 0;
float celsius = 0;
int angle = 0;
Servo myservo; //서보모터 객체 선언
void setup() {
myservo.attach(4); //서보모터를 디지털 핀4번으로 설정합니다.
Serial.begin(9600); //시리얼 통신을 초기화하고 통신속도를 9600bps로 설정합니다.
}
void loop() {
sensor = analogRead(0); //아날로그 0번핀에 연결된 아날로그 온도센서로 부터 값을 읽어들입니다.
//정해진 과정을 통해 센서에서 읽어들인 값을 섭씨온도로 변환합니다.
voltage = (sensor*5000)/1024;
voltage = voltage-500;
celsius = voltage/10;
//시리얼모니터에 온도값을 출력합니다.
Serial.print(celsius);
Serial.println((char)176);
//map함수를 통해 측정된 온도값을 서보모터가 움직일 각도로 변환시킵니다.
//celsius값은 0부터 30까지의 값만을 유효값으로 읽습니다.
//유효값으로 읽은 0부터 30사의 값을 180부터 0사이의 값으로 변환시킵니다.
int angle = map(celsius,0,30,180,0);
//서보모터의 각도를 시리얼모니터에 출력합니다.
Serial.print(angle);
Serial.println(" degree");
//서보모터에 주어진 각도값이 0부터 180사이의 유효한 값일 경우 서보모터를 제어합니다.
if(angle >=0 && angle <=180) {
myservo.write(angle);
delay(1000); //1초마다 반복하게 됩니다.
}
}
kocoafabeditor
항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!