以下是我的學習記錄,這文章會記錄從無到有的學習歷程,所以可能會比較繁瑣,不過我想詳細的記錄自己搜尋資料、解決問題、運算思維等後設認知部分,以利未來學習其他流程時也能簡化成這個學習模組。
我想要攻克的任務流程如下,如果想跳到結果得可以選擇以下文章
(一) 電腦上輸出DHT11溫濕度計數據
(四) 雙偵測器顯示,修改成自己喜歡的顯示模式
首先先蒐集資料,發現我的溫濕度計是DHT11
開啟arduino程式→草稿碼→匯入程式庫→管理程式庫
安裝完才可以開始寫程式
第一個可以運行的程式長這樣
// 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,這樣就突破第一關了。
沒有留言:
張貼留言