为什么在使用Lua时,NodeMCU的GPIO触发反向?

当我使用Lua和GPIO模块与我的NodeMCU时,我的高电平和低电平反过来了。

我从NodeMCU自定义构建中下载了我的构建:链接

要打开ESP8266上的蓝色LED,通常需要将GPIO引脚0设置为高电平。但我必须将其设置为低电平。

这是我在串行控制台中执行的点亮蓝色LED的代码:

gpio.write(0,gpio.LOW)

如果我直接将这个引脚连接到地线,它也会点亮蓝色LED,我认为是正确的。

是什么导致我的低电平和高电平被错误地读取了在NodeMCU中?

点赞
用户1788688
用户1788688

这是正常的 - 在板载 LED 中,低电平时灯将亮起,高电平时灯将熄灭。我已经在 Lua 和 Arduino 中编程过这两个版本,板载 LED 的工作方式都是一样的。

尝试将普通 LED 连接到同一个引脚上。你会发现它是反向的 -- 它会在高电平时亮起,在低电平时熄灭。

2017-09-07 05:01:31
用户1580216
用户1580216

HIGH 表示引脚设置为供应电压(它是 “sourcing” 电压),LOW 表示其设置为 0V(它是 “sinking” 电压)。

假设这个板子的布线方式与大多数相同,这是 LED 的大致原理图(请注意,gpio.write 中的 “0” 是指 GPIO16 硬件引脚,参见此处的图示):

GPIO16 引脚图

您可以看到,二极管的方向是指示流通过它以点亮它的,也就是说,它是“指向” GPIO16 的。因此,要使电流流过,您需要将 GPIO16 设置为 LOW(0V),以产生电压差。否则,二极管的两侧均为 3.3V,电流不会流动。

2017-09-07 05:23:57