A PHP Error was encountered

Severity: Notice

Message: Undefined index: HTTP_ACCEPT_LANGUAGE

Filename: core/KF_Controller.php

Line Number: 155

스크래치를 사용하여 온도센서 측정 값에 따라 LED 점등하기

초급 예제

누구나 쉽게 따라해볼 수 있는 쉬운 예제들입니다. 가볍게 도전~!

스크래치를 사용하여 온도센서 측정 값에 따라 LED 점등하기

2016-07-08 10:37:39

개요

 

1. 트렌지스터 온도 센서란 무엇인가?

온도센서(Temperature Sensor)란 물체의 온도를 감지하여 전기신호로 바꿔주는 센서입니다. 이 컨텐츠에서 사용할 TMP36 온도센서는 온도에 따른 전압의 변화량을 이용하여 온도를 측정하는 센서로써 약간의 오차가 있지만(±2%), -40℃~120℃까지의 온도를 측정 할 수 있고, 사용하기 편해서 학습용으로 자주 활용 합니다.

 

 

2. 트렌지스터 온도 센서 사용 방법

TMP36은 아래의 그림과 같이 각각 Pin 1번(5V), Pin 2번(아날로그), Pin 3번(GND)에 연결합니다.

 

 

이번 튜토리얼에서는 스크래치 2.0(S2A)를 활용해 온도 센서로 주변의 온도를 측정하고 온도에 따라 LED를 제어해보는 실습을 해보겠습니다. 

 

 

 

 

 

 

부품 목록

 

NO 부품명 수량 상세 설명
1 오렌지 보드 1 아두이노 UNO
2 온도 센서 1 TMP 36
3 LED 2(각 1개씩) RED, GREEN
4 저항 2 330Ω
5 브레드 보드 1  
6 점퍼 케이블 9  

 

부품명 오렌지보드 온도 센서(TMP 36) LED 저항 브레드보드 점퍼 케이블
파트

 

 

 

 

 

 

 

하드웨어 Making

 

브레드보드 레이아웃

 

1. 오렌지보드의 5V 핀을 브레드보드의 +버스에 연결합니다. 

2. 오렌지보드의 GND 핀을 브레드보드의 -버스에 연결합니다.

3. TMP 36의 평평한 부분이 오렌지보드를 향하도록 브레드 보드에 끼워줍니다.

4. TMP 36의 가장 윗 단자(Vin)를 브레드보드의 +버스에 연결합니다.

5. TMP 36의 중간 단자(Analog Voltage Out)를 오렌지보드의 A0(analog 0) 핀에 연결합니다.

6. TMP 36의 가장 아래 단자(Ground)를 브레드보드의 -버스에 연결합니다.

7. 빨간색 LED의 애노드(다리가 긴 단자)에 330Ω 저항을 연결합니다. 

8. 저항이 연결된 빨간색 LED의 애노드 단자를 오렌지보드의 D4(Digital 4)번핀에 연결합니다.

9. 초록색 LED의 애노드(다리가 긴 단자)에 330Ω 저항을 연결합니다. 

10. 저항이 연결된 초록색 LED의 애노드 단자를 오렌지보드의 D3(Digital 3)번핀에 연결합니다.

 

 

 

회로도(스케메틱)

 

 

 

 

 

 

 

스크래치 코딩

 

온도센서를 이용해 주변의 온도를 측정하고, 측정된 온도에 따라 LED를 제어하는 코딩입니다. 

아날로그의 0번을 온도 센서에, 디지털 3번과 4번에 LED를 연결해서 사용할 것이기 때문에 아래와 같이 포트 설정을 진행해줍니다.

 

1. 아날로그 0번핀 사용

2. 디지털 3번핀 사용(출력)

3. 디지털 4번핀 사용(출력)

 

celsius라는 변수를 만들어  아날로그 0번핀에 연결된 온도센서를 통해 들어오는 아날로그 데이터를 섭씨로 변환하여 저장하고 화면에 출력합니다.

섭씨로 변환된 온도 데이터가 40도가 넘으면 빨간색 LED(디지털 4번)가, 40도가 넘지 않으면 초록색 LED(디지털 3번)가 점등되게 됩니다.

 

/*
제목 : 엔트리를 이용해 온도 센서로 온도에 따라 LED 제어하기
설명 : 엔트리를 활용해 온도 센서로 측정된 주변의 온도에 따라 LED를 제어해봅시다.
*/

// RED LED를 9핀으로 설정합니다.
int RED_LED = 4;
// GREEN LED를 6핀으로 설정합니다.
int GREEN_LED = 3;

float sensor = 0;
float voltage = 0;
float celsius = 0;

// 실행시 가장 먼저 호출되는 함수이며, 최초 1회만 실행됩니다.
void setup() {
  Serial.begin(9600);
  pinMode(RED_LED, OUTPUT);
  pinMode(GREEN_LED, OUTPUT);
}

// setup() 함수가 호출된 이후, loop() 함수가 호출되며,
// 블록 안의 코드를 무한히 반복 실행합니다.
void loop() {
  // 센서로 부터 자료값을 받습니다.
  sensor = analogRead(A0);
  voltage = (sensor * 5000) / 1024;
  voltage = voltage - 500;
  // 입력 받은 자료 값을 섭씨 온도로 변환 합니다.
  celsius = voltage / 10;

  //섭씨로 변환된 온도를 시리얼 모니터에 출력합니다.
  Serial.print(celsius);
  Serial.print("\t");
  
  //온도가 40 이상이라면 빨간색 LED를 점등합니다.
  if (celsius > 40) {
    digitalWrite(RED_LED, HIGH);
    digitalWrite(GREEN_LED, LOW);
  }
  //온도가 40도 이하라면 초록색 LED를 점등합니다. 
  else {
    digitalWrite(RED_LED, LOW);
    digitalWrite(GREEN_LED, HIGH);
  }
}

 

 

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

온도센서, tmp36, SW 교육, 피지컬 컴퓨팅, temperature sensor, kocoa fab, physical computing