from machine import Pin # 從machine模組引入Pin
import dht # 引入dht模組
import time # 引入time模組
DHT_Pin = Pin(14, Pin.IN) # 創建Pin物件,將GPIO14設定為資料腳,並給定別名DHT_Pin
dht22 = dht.DHT22(DHT_Pin) # 創建DHT22物件,並指定使用DHT_Pin物件來連接DHT22溫溼度傳感器
LED_Temp = Pin(38, Pin.OUT) # 創建Pin物件,將GPIO38設定為輸出腳,並給定別名為LED_Temp
LED_Hum = Pin(37, Pin.OUT) # 創建Pin物件,將GPIO37設定為輸出腳,並給定別名為LED_Hum
LED_Temp.value(0) # 初始化LED_Temp為低電位(關閉狀態)
LED_Hum.value(0) # 初始化LED_Hum為低電位(關閉狀態)
countEnd = 5 # 設定計算平均值的次數
DelayStep = 0.1 # 設定每次測量之間的延遲時間(秒)
Temp_Thres = 40 # 溫度閾值
Hum_Thres = 60 # 濕度閾值
while True:
dht22_Temp = 0 # 初始化溫度變數
dht22_Hum = 0 # 初始化濕度變數
for CountTimes in range(countEnd):
dht22.measure() # 觸發DHT22傳感器進行一次測量
dht22_Temp += dht22.temperature() # 累加溫度值
dht22_Hum += dht22.humidity() # 累加濕度值
time.sleep(DelayStep) # 延遲一段時間,避免過度頻繁的測量
print("Current Temp =", dht22_Temp/countEnd,"C", "Current Hum =", dht22_Hum/countEnd,"%")
# 輸出當前平均溫度和濕度至終端
if (dht22_Temp/countEnd > Temp_Thres):
LED_Temp.value(1) # 如果平均溫度超過溫度閾值,則開啟LED_Temp(設為高電位)
else:
LED_Temp.value(0) # 否則關閉LED_Temp(設為低電位)
if (dht22_Hum/countEnd > Hum_Thres):
LED_Hum.value(1) # 如果平均濕度超過濕度閾值,則開啟LED_Hum(設為高電位)
else:
LED_Hum.value(0) # 否則關閉LED_Hum(設為低電位)