온도

magicdrill·2025년 1월 31일

임베디드SW_아두이노

목록 보기
10/14

온도 센서

간단한 온도센서 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);
}

page 123 Example

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);
}

0개의 댓글