使用 Arduino 連接溫濕度偵測器,可以偵測到空氣中的溫濕度,用來判斷溫溼度是否異常。例如:溫度過高時,是否有火警發生?濕度過高時,是否下雨導致雨水潑進室內?

接線部分
| Adruino | 溫溼度感測器 | 蜂鳴器 |
| D2 | DATA | |
| VCC | VCC | |
| GND | GND | |
| D13 | 長腳 | |
| GND | 短腳 |
#include <Wire.h> // <>改為半形,用全形網頁才能顯示,但是 arduino ide 編譯不過
#include "DHT.h"
// DHT
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
int DHTpin = 2;
DHT dht(DHTpin, DHTTYPE);
// 蜂鳴器
int BeepPin = 13;
void setup()
{
Serial.begin(9600);
dht.begin();
pinMode(BeepPin, OUTPUT);
}
void loop()
{
int h = dht.readHumidity();
int t = dht.readTemperature();
float f = dht.readTemperature(true);
if (isnan(h) || isnan(t) || isnan(f))
{
Serial.println("Failed to read from DHT sensor!");
return;
}
float hif = dht.computeHeatIndex(f, h);
float hic = dht.computeHeatIndex(t, h, false);
Serial.print("Humidity: ");
Serial.print(h);
Serial.print("% Temperature: ");
Serial.print(t);
Serial.print("°C ");
if(h >= 50 || t >= 33) // 濕度達到或超過50%,溫度達到或超過33°C,則蜂鳴器發出聲音
{
alarmBeep(BeepPin);
}
delay(2000);
}
// 聲響
void alarmBeep(int pin)
{
tone(pin, 1000, 1000);
delay(2000);
}
可由 Arduino 的序列埠監控視窗看到溫溼度的數據變化。
