2016-02-13 93 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