2017年12月12日 星期二

arduino溫濕度計輸出LCD(一)電腦上輸出DHT11溫濕度計數據

這次終於有心想突破:溫濕度數據顯示於LCD 這件事情
以下是我的學習記錄,這文章會記錄從無到有的學習歷程,所以可能會比較繁瑣,不過我想詳細的記錄自己搜尋資料、解決問題、運算思維等後設認知部分,以利未來學習其他流程時也能簡化成這個學習模組。

我想要攻克的任務流程如下,如果想跳到結果得可以選擇以下文章
(一) 電腦上輸出DHT11溫濕度計數據
(四) 雙偵測器顯示,修改成自己喜歡的顯示模式

首先先蒐集資料,發現我的溫濕度計是DHT11
於是丟"dht11 arduino"進去餵google,找到這些文章

Arduino範例19:利用DHT11抓取溫度和濕度

知道要將DHT11的+接5V,-接GND,out接D2腳位

開啟arduino程式草稿碼匯入程式庫管理程式庫


 搜尋"DHT11"選第一個"DHT sensor liberary"安裝
安裝完才可以開始寫程式

第一個可以運行的程式長這樣

// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain

#include "DHT.h"

#define DHTPIN 2     // what digital pin we're connected to

// Uncomment whatever type you're using!這裡可以改成不同的DHT偵測器
#define DHTTYPE DHT11   // DHT 11
//#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  Serial.println("DHTxx test!");

  dht.begin();
}

void loop() {
  // Wait a few seconds between measurements.等待時間,越短讀取數據越快,但DHT11儀器有極限值
  delay(2000);

  // Reading temperature or humidity takes about 250 milliseconds!抓取溫濕度計的數據,存入h,t,f三個數值裡面
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  // Read temperature as Celsius (the default)
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit (isFahrenheit = true)
  float f = dht.readTemperature(true);

  // Check if any reads failed and exit early (to try again).檢察是否錯誤的程式碼
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  // Compute heat index in Fahrenheit (the default)這邊看不懂...
  float hif = dht.computeHeatIndex(f, h);
  // Compute heat index in Celsius (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);

  //輸出給電腦以下資訊
  Serial.print("濕度: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("溫度: ");
  Serial.print(t);
  Serial.print(" oC   ");
  Serial.print(f);
  Serial.println(" oF\t");
}

成功之後就可以讀出這樣的數據了


如果出現錯誤訊息,無法灌給arduino板子的話,我除錯的方法有1.重插板子2.重新安裝DHT sensor liberary,這樣就突破第一關了。

沒有留言:

張貼留言