Lua 使用NodeMCU读取DHT22传感器

Lua 使用NodeMCU读取DHT22传感器,lua,esp8266,nodemcu,Lua,Esp8266,Nodemcu,我正在尝试使用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..";"..

我正在尝试使用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超时

我尝试了“pin”的所有可能值,并将DHT22数据输出附加到NodeMCU的所有GPIO

引脚的连接方式如下:

  • DHT22-VCC->NodeMCU-3.3V
  • DHT22-GND->NodeMCU GND
  • DHT22-DATA->NodeMCU-D0、D1、D2、D3、D4(全部试用)
我已经没有什么好主意了。这里可能有什么问题?

好的,我们开始


Pin码必须从模块上显示的内容映射到Lua代码中使用的索引。看见例如,使用
pin=4
时,您必须在模块上使用GPIO2。

是否您没有记住?使用
pin=4
时,您必须在模块上使用GPIO2。是的,我把pin搞错了。这就解决了!你想让我把这个作为一个答案,这样你就可以“结束”这个问题了吗?当然可以。否则我可以自己添加答案。我不明白为什么GPIO总是与真实的pin码“不正常”。他们为什么不设计一个具有匹配管脚和GPIO号的电路板呢?