Arduinoで不快指数を計算してLEDランプをつける

Facebook にシェア
Pocket
LINEで送る
このエントリーを Google ブックマーク に追加

Arduinoを持っていることを忘れていて、みつけたのでやってみた。

購入したもの

回路

次のように接続した。

スクリーンショット 2016-08-09 1.33.41

不快指数の計算方法

T を温度、 H を湿度とするとき、不快指数DIは次のように表せる。

DI = 0.81T + 0.01H(0.99T - 14.3) + 46.3

また、今回は不快指数を以下の基準で考えた。

感覚 DI LED
暑い 75以上
ちょうどいい 60以上75未満
寒い 60未満

コード

Arduino IDE をダウンロードして、次のように書いた。

#include "DHT.h"
#define DHT_PIN 2
#define DHT_TYPE DHT11
#define RED_LED_PIN 12
#define YLW_LED_PIN 11
#define GRN_LED_PIN 10

DHT dht(DHT_PIN, DHT_TYPE);

void setup() {
  Serial.begin(9600); 
  Serial.println("DHT11 test!"); 
  dht.begin();
  pinMode(RED_LED_PIN, OUTPUT);
  pinMode(YLW_LED_PIN, OUTPUT);
  pinMode(GRN_LED_PIN, OUTPUT);
}

void loop() {
  delay(1000);

  float h = dht.readHumidity();
  float t = dht.readTemperature();

  float di = 0.81 * t + 0.01 * h * (0.99 * t - 14.3) + 46.3;

  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  if(di > 75.0){

    digitalWrite(RED_LED_PIN, HIGH);
    digitalWrite(YLW_LED_PIN, LOW);
    digitalWrite(GRN_LED_PIN, LOW);

  }else if(di > 60.0){

    digitalWrite(RED_LED_PIN, LOW);
    digitalWrite(YLW_LED_PIN, HIGH);
    digitalWrite(GRN_LED_PIN, LOW);

  }else{

    digitalWrite(RED_LED_PIN, LOW);
    digitalWrite(YLW_LED_PIN, HIGH);
    digitalWrite(GRN_LED_PIN, LOW);
    
  }

  Serial.print("Humid: "); 
  Serial.print(h);
  Serial.println(" %\t");
  Serial.print("Temp: "); 
  Serial.print(t);
  Serial.println(" *C ");
  Serial.print("DI: "); 
  Serial.println(di);

}

実行

IMG_20160809_020352