2016-02-13 88 views
0

我正在嘗試使用NodeMCU從DHT22讀取溫度數據。 這是我的腳本:用NodeMCU讀取DHT22傳感器

function GetSensorData() 
    print("Trying to get temperature...") 
    pin = 4 
    status, temp, humi, temp_dec, humi_dec = dht.read(pin) 
    if status == dht.OK then 
     print("DHT Temperature:"..temp..";".."Humidity:"..humi) 
    elseif status == dht.ERROR_CHECKSUM then 
     print("DHT Checksum error.") 
    elseif status == dht.ERROR_TIMEOUT then 
     print("DHT timed out.") 
    end 
end 

-- MAIN 
tmr.alarm(1, 1000, 1, function() GetSensorData() end) 

這給了我下面的輸出(一遍又一遍):

試圖讓溫度... DHT超時。 ...

我嘗試了「引腳」的每個可能的值,並將DHT22數據輸出連接到我的NodeMCU的所有GPIO。

的引腳連接是這樣的:

  • DHT22-VCC - > NodeMCU-3.3V
  • DHT22-GND - > NodeMCU-GND
  • DHT22-DATA - > NodeMCU-D0,D1 ,D2,D3,D4(全都試過)

我已經用完了oif的想法。這裏可能是什麼問題?

+0

難道你不記得http://nodemcu.readthedocs.org/en/dev/en/modules/gpio/嗎?使用'pin = 4'時,您必須在模塊上使用GPIO2。 –

+0

是的,我把針腳弄混了。這解決了它! – Boris

+0

您是否希望我將此信息發佈爲答案,以便「關閉」該問題? –

回答

2

好了,在這裏我們去...

引腳數必須從它說什麼的模塊,你在Lua代碼中使用的索引上映射。見https://nodemcu.readthedocs.org/en/dev/en/modules/gpio。例如pin = 4,您必須在模塊上使用GPIO2。

+0

我不明白爲什麼GPIO總是與實際引腳號「無序」。他們爲什麼不設計一個具有匹配引腳和GPIO數字的電路板? – mfnalex