툴 - 라이브러리
검색창에 DHC11 - 설치(install all)
파일 - 예제 - 가장 마지막 DHT sensor library - DHT_Unified_Sensor
DHT_Unified_Sensor 에서 주석, 필요없는 함수 삭제
우리는 DHT11 만 씀, 핀 넘버는 2
온습도 측정 장치 연결 후 GREEN 불 켜기
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#define DHTPIN 2
#define DHTTYPE DHT11 // DHT 11
DHT_Unified dht(DHTPIN, DHTTYPE);
uint32_t delayMS;
int red = 4;
int green = 8;
int blue = 7;
void setup() {
Serial.begin(9600);
// Initialize device.
pinMode(red,OUTPUT);
pinMode(green,OUTPUT);
pinMode(blue,OUTPUT);
dht.begin();
Serial.println(F("DHTxx Unified Sensor Example"));
// Print temperature sensor details.
sensor_t sensor;
dht.temperature().getSensor(&sensor);
Serial.println(F("------------------------------------"));
Serial.println(F("Temperature Sensor"));
Serial.print (F("Sensor Type: ")); Serial.println(sensor.name);
Serial.print (F("Driver Ver: ")); Serial.println(sensor.version);
Serial.print (F("Unique ID: ")); Serial.println(sensor.sensor_id);
Serial.print (F("Max Value: ")); Serial.print(sensor.max_value); Serial.println(F("°C"));
Serial.print (F("Min Value: ")); Serial.print(sensor.min_value); Serial.println(F("°C"));
Serial.print (F("Resolution: ")); Serial.print(sensor.resolution); Serial.println(F("°C"));
Serial.println(F("------------------------------------"));
// Print humidity sensor details.
dht.humidity().getSensor(&sensor);
Serial.println(F("Humidity Sensor"));
Serial.print (F("Sensor Type: ")); Serial.println(sensor.name);
Serial.print (F("Driver Ver: ")); Serial.println(sensor.version);
Serial.print (F("Unique ID: ")); Serial.println(sensor.sensor_id);
Serial.print (F("Max Value: ")); Serial.print(sensor.max_value); Serial.println(F("%"));
Serial.print (F("Min Value: ")); Serial.print(sensor.min_value); Serial.println(F("%"));
Serial.print (F("Resolution: ")); Serial.print(sensor.resolution); Serial.println(F("%"));
Serial.println(F("------------------------------------"));
// Set delay between sensor readings based on sensor details.
delayMS = sensor.min_delay / 1000;
}
void loop() {
// Delay between measurements.
delay(delayMS);
// Get temperature event and print its value.
sensors_event_t event;
dht.temperature().getEvent(&event);
if (isnan(event.temperature)) {
Serial.println(F("Error reading temperature!"));
}
else {
Serial.print(F("Temperature: "));
Serial.print(event.temperature);
Serial.println(F("°C"));
}
// Get humidity event and print its value.
dht.humidity().getEvent(&event);
if (isnan(event.relative_humidity)) {
Serial.println(F("Error reading humidity!"));
}
else {
Serial.print(F("Humidity: "));
Serial.print(event.relative_humidity);
Serial.println(F("%"));
}
digitalWrite(green,HIGH);
delay(1000);
digitalWrite(green,LOW);
delay(1000);
}
온도/습도에 따라 불 켜기
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#define DHTPIN 2 // 보드에 연결된 출력핀 번호
#define DHTTYPE DHT11 // 센서 종류
#define RED 4
#define BLE 7
#define GRN 8
DHT_Unified dht(DHTPIN, DHTTYPE); // 핀번호와 센서 종류를 dht 함수에 전달
uint32_t delayMS;
void setup() {
Serial.begin(9600); // 시리얼 동작하여 시리얼 모니터에 출력하도록 함
dht.begin(); // 센서 동작 시킴
pinMode(RED, OUTPUT);
pinMode(BLE, OUTPUT);
pinMode(GRN, OUTPUT);
sensor_t sensor; // 센서 변수 생성
dht.temperature().getSensor(&sensor); // 생성한 센서 변수의 참조 주소 전달하여 온도 측정관련 셋팅값 저장할 수 있도록 함.
delayMS = sensor.min_delay / 1000; // 측정 딜레이 설정
}
void loop() {
digitalWrite(GRN, HIGH);
delay(delayMS / 8); // 일정 시간동안 멈춤
sensors_event_t event; // 센서 이벤트 변수 생성
dht.temperature().getEvent(&event); // 생성한 센서 이벤트 변수 참조 주소 전달하여 이벤트 발생시의 측정값을 저장할 수 있도록 함
if (isnan(event.temperature)) { // non 인지 검사
Serial.println(F("Error reading temperature!"));
}
else {
Serial.print(F("Temperature: "));
Serial.print(event.temperature); // 측정된 온도 출력
Serial.println(F("°C"));
if(event.temperature >= 30.0) {
digitalWrite(RED, HIGH);
} else {
digitalWrite(RED, LOW);
}
}
dht.humidity().getEvent(&event); // 생성한 센서 이벤트 변수 참조 주소 전달하여 이벤트 발생시의 측정값을 저장할 수 있도록 함
if (isnan(event.relative_humidity)) { // non 인지 검사
Serial.println(F("Error reading humidity!"));
}
else {
Serial.print(F("Humidity: "));
Serial.print(event.relative_humidity); // 측정된 습도 출력
Serial.println(F("%"));
if(event.relative_humidity >= 50.0) {
digitalWrite(BLE, HIGH);
} else {
digitalWrite(BLE, LOW);
}
}
digitalWrite(GRN, LOW);
delay(delayMS / 8);
}
'.etc > Arduino' 카테고리의 다른 글
[211221] 아두이노 실습 (3) 센서 값 db저장 및 출력 (0) | 2021.12.22 |
---|---|
[211220] 아두이노 실습 (3) SSD 텍스트 출력 (0) | 2021.12.20 |
[211214] 아두이노 실습(1) (0) | 2021.12.14 |