牟曉東
借助于溫度傳感器、風(fēng)扇模塊和幾個(gè)LED燈,我們利用Arduino開(kāi)發(fā)制作一個(gè)“高溫監(jiān)控儀”:當(dāng)環(huán)境溫度處于較適宜的溫度范圍時(shí)(比如28℃以下),綠色LED燈亮,風(fēng)扇模塊無(wú)動(dòng)作;當(dāng)溫度有小幅度升高時(shí)(28℃以上、30℃以下),黃色LED燈發(fā)光進(jìn)行預(yù)警,同時(shí)風(fēng)扇模塊低速轉(zhuǎn)動(dòng)進(jìn)行風(fēng)力降溫,直至恢復(fù)正常;當(dāng)溫度較高時(shí)(30℃以上),紅色LED燈發(fā)光進(jìn)行報(bào)警,風(fēng)扇模塊高速轉(zhuǎn)動(dòng)進(jìn)行風(fēng)力快速降溫……在整個(gè)過(guò)程中,屏幕每隔3秒鐘就顯示一次實(shí)時(shí)檢測(cè)到的溫度數(shù)據(jù)。
實(shí)驗(yàn)器材:Arduino UNO主板一個(gè),DHT11溫濕度傳感器一個(gè),風(fēng)扇模塊一個(gè),綠色、黃色和紅色LED燈各一支,面包板一塊,各色杜邦線若干;對(duì)照設(shè)計(jì)好的電路接線圖進(jìn)行器材連接(如圖1)。
首先,將Arduino的5V和GND通過(guò)杜邦線連接至面包板一側(cè)的紅色和藍(lán)色線槽;接著,將綠色、黃色和紅色LED燈的短腿(負(fù)極)均插接至藍(lán)色線槽,長(zhǎng)腿(正極)則分別插接至a列某行插孔中,再通過(guò)同種顏色的杜邦線將正極與Arduino的11號(hào)、12號(hào)和13號(hào)數(shù)字引腳相連;然后,將溫度傳感器和風(fēng)扇模塊的VCC端和GND端均通過(guò)杜邦線與面包板的紅色、藍(lán)色線槽連接,二者的信號(hào)端則分別插接至Arduino的2號(hào)和3號(hào)數(shù)字引腳;最后,通過(guò)數(shù)據(jù)線將Arduino與計(jì)算機(jī)USB接口連接,完成電路連接(如圖2)。
在Arduino IDE中對(duì)DHT11溫濕度傳感器進(jìn)行編程控制的前提是要安裝DHT.h庫(kù),首先依次點(diǎn)擊菜單“項(xiàng)目”-“加載庫(kù)”-“管理庫(kù)”項(xiàng),在彈出的“庫(kù)管理器”中以“DHT11”為關(guān)鍵詞進(jìn)行搜索,會(huì)出現(xiàn)一個(gè)名為“DHT sensor library(by Adafruit)”的庫(kù),顯示支持DHT11(目前最新版本為1.4.2);接著,點(diǎn)擊“安裝”按鈕(如圖3),在彈出的提示窗口中點(diǎn)擊“Install all”按鈕進(jìn)行下載和安裝;結(jié)束后返回“加載庫(kù)”中查看,底部“推薦的庫(kù)”中就會(huì)顯示有“DHT sensor library”項(xiàng),說(shuō)明安裝成功。
首先導(dǎo)入DHT.h庫(kù):“#include
在loop()函數(shù)中先定義浮點(diǎn)型變量Temperature,通過(guò)“float Temperature = dht.readTemperature();”語(yǔ)句實(shí)現(xiàn)對(duì)檢測(cè)溫度數(shù)據(jù)的讀取,然后將該數(shù)據(jù)在串口監(jiān)視器中輸出:“Serial.print("當(dāng)前溫度為:");”“Serial.print(Temperature);”和“Serial.println("℃");”;接著,構(gòu)建“if…else if…else…”三分支選擇結(jié)構(gòu),對(duì)溫度數(shù)據(jù)進(jìn)行數(shù)值區(qū)間判斷:如果溫度在28℃以下——“if (Temperature <= 28.00)”,則控制綠色LED燈發(fā)光:“digitalWrite(GreenLED, HIGH);”;如果溫度在28℃-30℃之間——“else if (Temperature > 28.00 && Temperature <= 30.00)”,則控制黃色LED燈發(fā)光、風(fēng)扇低速轉(zhuǎn)動(dòng):“digitalWrite(YellowLED,HIGH);”“analogWrite(Fan, 127);”;如果溫度超過(guò)30℃,則控制紅色LED發(fā)光、風(fēng)扇高速轉(zhuǎn)動(dòng):“digitalWrite(RedLED, HIGH);”“analogWrite(Fan, 255);”。