Expressif esp8266 开发套件 c 的 GPIO 映射

问题描述

我是 Lua、NodeMCU 的新手,尤其是 Expressif esp8266 Dev Kit C。

我能够构建固件并将其闪存到开发套件以及 Wemos D1 mini。

但是说到简单的 GPIO 示例和测试(LED 闪烁),我可以在我的 Wemos D1 上运行它,但不能在 Expressif ESP8266 开发套件上运行。对于 Wemos,NodeMCU gpio 文档中给出的 GPIO 映射工作正常,但我似乎无法为我的 ExpressIf 套件找到正确的映射。

为此,我使用 sp8266 datasheet 查找合适的 GPIO 引脚,查找其功能,然后使用 NodeMCU gpio 文档中的映射来查找驱动 GPIO 引脚的索引。

示例: ESP8266 pin: 16 --> ESP8266 pin function: GPIO4 --> NodeMCU ESP8266 pin: GPIO4 --> NodeMCU IO index: 2

然后我连接 LED(阳极连接到引脚 16,阴极连接到 GND 引脚)并运行脚本 - 但没有任何反应,即使脚本运行愉快......

输出显示了预期的“正在运行...”,然后是“高”和“低”,频率为 1 秒。

脚本:

-- Config
local pin = 2            --> GPIO4
local value = gpio.LOW
local duration = 1000    --> 1 second

-- Function toggles LED state
function toggleLED ()
    if value == gpio.LOW then
        value = gpio.HIGH
        print("high")
    else
        value = gpio.LOW
        print("low")
    end
    gpio.write(pin,value)
end

-- Initialise the pin
gpio.mode(pin,gpio.OUTPUT)

-- Create an interval
local timer = tmr.create()
timer:alarm(duration,tmr.ALARM_AUTO,toggleLED)

print("running")

我做错了什么?

解决方法

马塞尔的评论让我走上了正确的道路:

ESP8266 的引脚 12 是 GPIO 引脚,但我不能使用功能描述(GPIO 13)而是引脚编号(即 12)在 NodeMCU 文档中查找正确的索引号。

因此,ESP8266 引脚 16 的正确索引号是 0,而不是 2:

-- Config
local pin = 4            --> GPIO4
...